【发布时间】:2021-06-08 09:01:02
【问题描述】:
我正在尝试在我的 Android TV 设备上读取真实的物理显示分辨率。我有两台测试电视:
- 全高清,分辨率为 1920 x 1080
- 超高清,分辨率为 3840 x 2160
和 1 个搭载 Android 9 的 Android TV HDMI 棒。
我想根据电视设备读出真实的物理屏幕分辨率。为此,我尝试以两种方式读出 displayMetrics:
-
尝试:
context.resources.displayMetrics -
尝试:
val displayMetrics = DisplayMetrics() activity.display?.getRealMetrics(displayMetrics)
不幸的是,我的 UHD 设备在上述两次尝试中都显示为 1920x1080。我对某些按比例缩小的显示分辨率不感兴趣。
编辑:正如@IanGClifton 回答的那样,我用DisplayCompat 进行了尝试。我有一个在 Andorid 9 上运行的 AndroidTV“Stick”,它通过 HDMI 插入任何电视(插入上述 3840x2160 像素的 UHD 电视)设备。我闪动摇杆,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 棒)时,我得到了正确的分辨率。
如何读取任何设备的真实本机物理显示分辨率(以像素为单位)?
【问题讨论】:
-
some scaled down display resolution.你确定另一个没有放大吗? -
@blackapps FullHD 显示 1920x1080。超高清电视也显示 1920x1080。那么应该扩大哪一个?!?
-
当然是 3840 x 2160。
-
@blackapps 这是一款真正的超高清设备,具有 3840x2160 的原生显示。我可以在超高清电视上观看 4K 电影。我猜启动器应用程序在 1920x1080 下运行,这就是我在 UHD 设备上获得 1920x1080 的原因。我不明白你的意思?
标签: android android-tv android-windowmanager android-displaymanager