高效改变屏幕亮度

6
我需要以编程方式更改屏幕亮度。我阅读了多个类似在 Android 中无法以编程方式应用系统屏幕亮度的解决方案。
我的问题是这些解决方案意味着要改变活动才能生效(例如使用立即结束的虚拟活动),而我想避免活动切换所带来的开销。
是否有其他解决方案...也许使用本地代码,使屏幕亮度立即更改?
1个回答

7
以下内容会立即影响单个活动,无需重新启动。在暂停/恢复过程中,该活动还会记住screenBrightness属性。
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 1; // 0f - no backlight ... 1f - full backlight
getWindow().setAttributes(lp);

如果您在系统设置中启用了自动背光亮度,那么这将没有任何效果。 这个解决方案 可以帮助关闭自动背光。


即使启用了“自动背光级别”,使用WindowManager.LayoutParams设置屏幕亮度也可以正常工作。如文档所述,“screenBrightness可用于覆盖用户对屏幕的首选亮度”。在Android 4.1和4.4上进行了测试。这里有一位Android框架工程师的确认:https://groups.google.com/forum/#!msg/android-developers/tYlCn7bvAmw/2quRf_ZZZigJ - TechAurelian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接