android - 辅助显示器 DisplayMetrics 依赖于主显示器?

标签 android

我有两种不同的平板电脑:

  • 10.1 英寸平板电脑 - 1280x800 @ ~149dpi
  • 15.6 英寸平板电脑 - 1920x1080 @ ~156dpi

  • 就实际物理(现实世界)规范而言,这些平板电脑都非常接近 160dpi(其中 1px 相当于 1dp )。系统报告它们正好是 160dpi。没关系,这里没什么大不了的。

    我还有一个辅助显示器。它与我的 10.1"平板电脑具有相同的物理(实际)规范。但是,当我将它连接到两个不同的平板电脑并使用它来显示 Android Presentation 时,辅助显示器将报告完全不同的 DisplayMetrics

    连接到 10.1"平板电脑时,辅助显示屏会报告:
  • 分辨率:1280x800
  • DPI: 237.0
  • 密度:1.48125

  • 连接到 15.6"平板电脑时,辅助显示屏会报告:
  • 分辨率:1024x768
  • DPI: 227.0
  • 密度:1.41875

  • 什么可能导致这种情况?

    该应用程序本身就像石头一样愚蠢。我所做的就是创建一个 Presentation对象并在主显示器和辅助显示器上显示虚拟棋盘布局。

    我已经尝试同时使用 MediaRouterDisplayManager用于查找我的 Display 的 API并创建我的Presentation .他们都给出了相同的结果。
    @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();
            }
        }
    }
    
    @Override
    protected void onResume() {
        super.onResume();
    
        DisplayManager manager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
        Display[] displays = manager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
    
        if (displays.length > 0) {
            Presentation presentation = new MyPresentation(this, displays[0]);
            presentation.show();
        }
    }
    

    最佳答案

    我认为您可以从物理显示器创建一个 VirtualDisplay。
    创建 VirtualDisplay 时,您可以更改密度 dpi。

    displayManager.createVirtualDisplay(
          "VirtualDisplay",
          virtualDisplayWidth,
          virtualDisplayHeight,
          designedDensityDpi,
          surfaceView.getHolder().getSurface(),
          VIRTUAL_DISPLAY_FLAG_PRESENTATION
        );
    

    关于android - 辅助显示器 DisplayMetrics 依赖于主显示器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695530/

    相关文章:

    java - 如何在没有 Android Studio/XML 的情况下包含原始文件?

    android - 没有用于通知 Android 的 LED 灯

    java - 面临从二进制文件获取 double 和 int 值的问题

    java - Android应用程序ActivityThread中的RuntimeException未能找到一些来源?

    android - 无法合并dex gradle构建失败

    java - 使 Jar 文件正确链接的问题。验证错误

    Android AsyncTask ProgressDialog轮换配置不同

    java - UDP 将数据从一台设备发送到另一台设备

    android - Picasso 只在 BaseAdapter 中加载一张图像

    安卓模拟器 : How to Copy an Emulator/AVD?