Как определить диапазон яркости экрана на Android? - PullRequest
0 голосов
/ 19 мая 2019

Я использую следующий код для установки яркости экрана, который отлично работает на большинстве телефонов:

    protected fun setBrightness(value: Float) {
        //Set the system brightness using the brightness variable value
        Settings.System.putInt(contentResolver, Settings.System
            .SCREEN_BRIGHTNESS, (value * 255).toInt())
        //Get the current window attributes
        val layoutpars = window.getAttributes()
        //Set the brightness of this window
        layoutpars.screenBrightness = value
        //Apply attribute changes to this window
        window.setAttributes(layoutpars)
    }

Когда я передаю значение 1, означающее максимальное значение, оно преобразуется в 255, которое считается наибольшим значением для установки яркости экрана. Однако при установке Xiaomi Mi8 в значение 255 яркость не будет установлена ​​на полный диапазон, как показано на этом снимке экрана:

enter image description here

После печати некоторых значений отладки и экспериментов, похоже, что на Xiaomi Mi8 максимальное значение яркости на самом деле составляет 1024 (или, по крайней мере, умножение 1 на это значение устанавливает полную полосу яркости).

Кажется, что разные устройства Android могут иметь разные шкалы яркости. Есть ли какой-нибудь API для получения максимального значения яркости, поэтому мне не нужно жестко кодировать разные константы?

1 Ответ

1 голос
/ 23 мая 2019

Это характерно для некоторых устройств Xiaomi.Например, Xiaomi Redmi Note 7 имеет диапазон 0-4000.

Официальная документация определяет диапазон SCREEN_BRIGHTNESS как 0-255.Итак, я думаю, что нет API для получения максимального значения яркости.

На некоторых устройствах есть файл "/ sys / class / leds / lcd-backlight / max_brightness", который может содержать максимальное значение.

...