1

Как я могу изменить уровень адаптивной яркости программно, на Android Lollipop?Изменение адаптивного уровня яркости программно

Я знаю, как сменить руководство brightness level, а также включить или выключить adaptive brightness. Это делается так: Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);

Однако с adaptive brightness включена, операционная система объединяет его с другим brightness level который отличается от ручной один.

Есть ли способ сделать это?

Target/мин/макс SDK является 21.

Ура!

ответ

6

Не знаю, почему, но есть скрытая константа SCREEN_AUTO_BRIGHTNESS_ADJ в Android API для настройки адаптивной яркости. Но вы можете передать значение "screen_auto_brightness_adj", как и я.

Адаптивная регулировка яркости сохраняется как значение поплавка в диапазоне [-1; 1]. Если вы используете значение яркости в диапазоне [0; 255], вы можете преобразовать его в правильное значение, как показано ниже.

float value = (((float)brightness*2)/255) - 1.0f; 
Settings.System.putFloat(contentResolver, "screen_auto_brightness_adj", value); 
+0

Это скрытая настройка, которую я искал! Спасибо @Ogix – Paschalis

+1

Я хотел реализовать тот же эффект, что и при настройке ползунка яркости при выпадании быстрых настроек. Кажется, это работает. Но если он скрыт, значит ли это, что Google не хочет, чтобы приложения настраивали уровень яркости системы при настройке адаптивной яркости? –

+0

Настройка «screen_auto_brightness_adj» работала на CyanogenMod, но не работала на устройствах Samsung. –

0

Если ваше приложение targetSdkVersion является 23+, Settings.System.putFloat (contentResolver, "screen_auto_brightness_adj", значение) не будет работать, как Android запрещает изменять любые "скрытые" настройки.

Прочтите фреймворки \ base \ packages \ SettingsProvider \ src \ com \ android \ providers \ settings \ SettingsProvider.java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk() для деталей.

Смежные вопросы