如何在安卓棒棒糖上以编程方式更改自适应亮度级别?
我知道 如何更改手动brightness level
,以及如何打开或关闭adaptive brightness
。它是这样完成的: Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);
但是,启用adaptive brightness
后,操作系统会将其与另一种与手动brightness level
不同的组合在一起。
有没有办法做到这一点?
目标/最小/最大 SDK 为 21。
为什么,但Android API中有一个隐藏的常量SCREEN_AUTO_BRIGHTNESS_ADJ
来调整自适应亮度。但是你可以像我一样传递"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);
如果您的应用 targetSdkVersion 为 23+,Settings.System.putFloat(contentResolver, "screen_auto_brightness_adj", value( 将无法工作,因为 Android 会禁止您修改任何"隐藏"设置。
阅读 frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk(( 了解详细信息。