如何在Android Lollipop上以编程方式更改自适应亮度级别?
我知道如何更改手册brightness level
,以及打开或关闭adaptive brightness
。这是这样做的:
Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);
但是,启用adaptive brightness
后,操作系统会将其与另一个brightness level
组合,后者与手动操作系统不同。
有办法做到这一点吗?
目标/分钟/最大SDK为21。
答案 0 :(得分:7)
不知道为什么,但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);
答案 1 :(得分:0)
如果您的应用targetSdkVersion为23+,则Settings.System.putFloat(contentResolver,“screen_auto_brightness_adj”,值)将无效,因为Android会禁用您修改任何“隐藏”设置。
阅读frameworks \ base \ packages \ SettingsProvider \ src \ com \ android \ providers \ settings \ SettingsProvider.java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk()了解详情。