title: Secondary display DisplayMetrics dependent on primary display?
body: <p>I have two different tablets:</p>
  
  <ul>
  <li>10.1" tablet - 1280x800 @ ~149dpi</li>
  <li>15.6" tablet - 1920x1080 @ ~156dpi</li>
  </ul>
  
  <p>These tablets are both very close to 160dpi (where <code>1px</code> is equivalent to <code>1dp</code>) in terms of actual physical (real-world) specifications. The system reports them as being <em>exactly</em> 160dpi. That's fine, no big deal here.</p>
  
  <p>I also have a secondary display. It has the same physical (real-world) specifications as my 10.1" tablet. However, when I connect it to the two different tablets and use it to display an Android <code>Presentation</code>, the secondary display will report wildly different <code>DisplayMetrics</code>.</p>
  
  <p>When connected to the 10.1" tablet, the secondary display reports:</p>
  
  <ul>
  <li>Resolution: 1280x800</li>
  <li>DPI: 237.0</li>
  <li>Density: 1.48125</li>
  </ul>
  
  <p>When connected to the 15.6" tablet, the secondary display reports:</p>
  
  <ul>
  <li>Resolution: 1024x768</li>
  <li>DPI: 227.0</li>
  <li>Density: 1.41875</li>
  </ul>
  
  <p>What could cause this?</p>
  
  <hr>
  
  <p>The app itself is dumb as rocks. All I do is create a <code>Presentation</code> object and show a dummy checkerboard layout on both the primary and secondary displays.</p>
  
  <p>I've tried using both the <code>MediaRouter</code> and <code>DisplayManager</code> APIs for finding my <code>Display</code> and creating my <code>Presentation</code>. They both give identical results. </p>
  
  <pre><code>@Override
  protected void onResume() {
      super.onResume();
  
      MediaRouter mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
      MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
  
      if (route != null) {
          Display display = route.getPresentationDisplay();
          if (display != null) {
              Presentation presentation = new MyPresentation(this, display);
              presentation.show();
          }
      }
  }
  </code></pre>
  
  
  
  <pre><code>@Override
  protected void onResume() {
      super.onResume();
  
      DisplayManager manager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
      Display[] displays = manager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
  
      if (displays.length &gt; 0) {
          Presentation presentation = new MyPresentation(this, displays[0]);
          presentation.show();
      }
  }
  </code></pre>