Я использую следующий код для установки яркости экрана, который отлично работает на большинстве телефонов:
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 яркость не будет установлена на полный диапазон, как показано на этом снимке экрана:
После печати некоторых значений отладки и экспериментов, похоже, что на Xiaomi Mi8 максимальное значение яркости на самом деле составляет 1024 (или, по крайней мере, умножение 1 на это значение устанавливает полную полосу яркости).
Кажется, что разные устройства Android могут иметь разные шкалы яркости. Есть ли какой-нибудь API для получения максимального значения яркости, поэтому мне не нужно жестко кодировать разные константы?