由于 AndroidTV 缩小了 UHD/4K 分辨率电视设备的 UI,因此 DisplayMetrics 始终为这些更高分辨率的设备返回 1920x1080。
一种解决方法是DisplayCompat:
在许多 Android TV 设备上,Display.Mode 可能不会报告准确的宽度和高度,因为这些设备没有足够强大的图形管道来以视频管道支持的相同分辨率运行框架代码。对于这些设备,应用程序无法确定当前显示模式是否为 4k,或者显示是否支持切换到其他 4k 模式。
DisplayCompat.getsupportedModes(context, display)
在运行 AndroidTV 操作系统的 4K 电视设备上运行良好。在这里,我得到了真正的物理原生分辨率。每当我有一个运行 AndroidTV 操作系统的 AndroidTV Stick(如 Chromecast)时,同样的功能会再次返回 1920x1080。
正如 Brian Lindahl在他的提交中指出的那样: 去年我们在这个领域学到了很多关于 Android TV 架构的知识,但最初的概念是有缺陷的。HDMI 无法确定“本机”模式是什么。此外,系统属性根据当前显示模式是动态的。
如何通过 HDMI 读取屏幕分辨率?或者如果它仍然“有缺陷”,什么时候修复?