以编程方式更改自适应亮度级别

时间:2015-03-30 14:40:16

标签: android android-5.0-lollipop brightness screen-brightness

如何在Android Lollipop上以编程方式更改自适应亮度级别?

我知道如何更改手册brightness level,以及打开或关闭adaptive brightness。这是这样做的: Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);

但是,启用adaptive brightness后,操作系统会将其与另一个brightness level组合,后者与手动操作系统不同。

有办法做到这一点吗?

目标/分钟/最大SDK为21。

2 个答案:

答案 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()了解详情。