如何解决如何在 Android TV 上读取真实的原生物理显示分辨率?
我正在尝试读取我的 Android TV 设备上的真实物理显示分辨率。我有两台测试电视:
- 1920 x 1080 分辨率的全高清
- 3840 x 2160 分辨率的超高清
和 1 个 Android TV HDMI 棒,支持 Android 9。
我想根据电视设备读出真实的物理屏幕分辨率。为此,我尝试以两种方式读出 displayMetrics:
-
尝试:
context.resources.displayMetrics
-
尝试:
val displayMetrics = displayMetrics() activity.display?.getRealMetrics(displayMetrics)
不幸的是,我的超高清设备在上述两次尝试中都显示了 1920x1080。我对某些缩小的显示分辨率不感兴趣。
编辑:正如@IanGClifton 回答的那样,我用 displayCompat
试了一下。我有一个在 Andorid 9 上运行的 AndroidTV“Stick”,它通过 HDMI 连接到任何电视(插入上面提到的 3840x2160 像素的 UHD 电视)设备。我闪烁了 Stick,physicalWidth
和 physicalHeight
仍然告诉我 1920x1080 像素。
val defaultdisplay = activity.windowManager.defaultdisplay
val mode = displayCompat.getMode(context,defaultdisplay!!)
Log.d(TAG,"Resolution ${mode.physicalWidth} x ${mode.physicaHeigth}.")
但是,当我直接刷入 Android TV 设备(而不是 Android TV 棒)时,我得到了正确的分辨率。
如何读出任何设备的真实原生物理显示分辨率(以像素为单位)?
解决方法
Android TV 当前将 UI 映射到 1920x1080,然后根据附加面板进行缩放,因此您不想查看 DisplayMetrics 而是查看 DisplayCompat。
使用 DisplayCompat.getSupportedModes() 获取可以告诉您分辨率的 ModeCompat 对象,但您需要确保您使用的是相对较新版本的 AndroidX Core,因为核心 1.5.0 中已修复-beta02 用于某些错误报告 1920x1080 的面板。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。