2

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

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

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

有没有办法做到这一点?

目标/最小/最大 SDK 为 21。

4

2 回答 2

8

不知道为什么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);
于 2015-04-06T11:31:04.297 回答
1

如果您的应用 targetSdkVersion 为 23+,则 Settings.System.putFloat(contentResolver, "screen_auto_brightness_adj", value) 将不起作用,因为 Android 禁止您修改任何“隐藏”设置。

阅读 frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk() 了解详情。

于 2017-11-15T07:15:06.957 回答