Как читать разрешение дисплея через HDMI? DisplayCompat отлично работает на AndroidTV напрямую, но не на AndroidTV Stick
Поскольку AndroidTV уменьшает пользовательский интерфейс для телевизионных устройств с разрешением UHD / 4K, DisplayMetrics всегда возвращает 1920x1080 для более высоких разрешений.
Одним из способов решения этой проблемы является DisplayCompat:
На многих устройствах Android TV Display.Mode может не сообщать точную ширину и высоту, потому что эти устройства не имеют достаточно мощных графических конвейеров для запуска кода платформы с теми же разрешениями, которые поддерживаются их конвейерами видео. Для этих устройств приложение не может определить, например, является ли текущий режим отображения 4k или что дисплей поддерживает переключение в другие режимы 4k.
DisplayCompat.getsupportedModes(context, display)
отлично работает на устройствах 4K TV с установленной на нем ОС AndroidTV. Здесь я получаю реальное физическое разрешение. Всякий раз, когда у меня есть AndroidTV Stick (например, Chromecast) с запущенной на нем ОС AndroidTV, та же функция снова возвращает 1920x1080.
Как отметил Брайан Линдал в своем заявлении : « Мы многое узнали об архитектуре Android TV в этой области за последний год, и исходная концепция ошибочна. HDMI не позволяет определить, какой режим является «родным». Кроме того, свойства системы являются динамическими в зависимости от текущего режима отображения.
Как я могу прочитать разрешение экрана через HDMI?