以编程方式更改自适应亮度级别
Change adaptive brightness level programmatically
如何在 Android Lollipop 上以编程方式更改自适应亮度级别?
我知道如何更改手册 brightness level
,以及如何打开或关闭 adaptive brightness
。它是这样做的:
Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);
但是,启用 adaptive brightness
后,OS 将其与另一个 brightness level
结合,这与手动的不同。
有办法吗?
Target/min/max 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 禁止您修改任何 "hidden" 设置.
阅读frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider。java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk() 了解详情。
如何在 Android Lollipop 上以编程方式更改自适应亮度级别?
我知道如何更改手册 brightness level
,以及如何打开或关闭 adaptive brightness
。它是这样做的:
Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, newLevel);
但是,启用 adaptive brightness
后,OS 将其与另一个 brightness level
结合,这与手动的不同。
有办法吗?
Target/min/max 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 禁止您修改任何 "hidden" 设置.
阅读frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider。java warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk() 了解详情。