移动终端 2012 年 10 月 29 日

Android Tasker应用之自动调节屏幕亮度

本文介绍如何使用Tasker做一个自动调节屏幕亮度的应用,解决了Android自带的自动亮度调节不够实用的问题。通过光照强度和屏幕亮度的比例关系,可以计算出当前合适的屏幕亮度,并在Tasker中设置自动调节算法。整个系统流程简单,而且效果可以媲美其他优秀的调节屏幕亮度的软件,还省电省内存、绿色环保。本文详细介绍了具体实现步骤,并提醒读者在使用时要注意关闭系统自带的自动亮度调节功能。
Android自带的自动亮度调节非常鸡肋,开了几乎没什么效果,以至于每到晚上要到设置里将亮度调低,白天再调高一些,非常不方便。不过有了Tasker,这个繁琐的人肉操作就可以省略了,这篇文章将介绍如何使用Tasker做一个自动调节屏幕亮度的应用,效果完全可以媲美Lux Auto BrightnessAdjBrightness等软件,而且自动调节算法高度定制、省电省内存、绿色环保…
效果图:
自动亮度显示(最后一行)

自动调节屏幕亮度原理

我们假设光照强度和屏幕亮度在一定范围内是一个比例关系:光照强度/屏幕亮度=k(本文中k=4),那么知道光照传感器的值就可以计算出当前合适的屏幕亮度,即 屏幕亮度=光照强度/k;
由于屏幕亮度不能太暗,因此需要设定一个最小的屏幕亮度值,那么屏幕亮度的计算就变成:屏幕亮度=光照强度/k + 最小亮度;
为了屏蔽不同设备的差异和光照传感器在不同环境下的误差,这里再加上一个最终亮度百分比,即 屏幕亮度=(光照强度/k + 最小亮度)*百分比;
最后让Tasker自动设置上面计算出的的屏幕亮度就可以了,整个系统的流程图如下:
tasker auto brightness workflow
注:上图中的“自动背光开启”并不是指系统的自动亮度调节功能,而是我们自己在Tasker中定义的一个全局变量。切记要在系统设置里将自动亮度调节关闭,否则本文讨论的的Tasker自动亮度调节将无效!

具体实现

添加全局变量

打开Tasker的Variables标签界面,添加2个全局变量,将初始值设为1和100.
%MAUTOBRT    // 是否开启Tasker自动背光任务(1: 开启 0:关闭)  
%MBRTGAIN    // 计算机结果百分比(屏蔽设备差异,建议范围50~100,绝对禁止设为0!)  
variable set

添加自动调节任务

在Tasker的Tasks标签页面导入我配置好的auto_brightness.tsk.zip。注意先解压再导入,导入后的任务打开应该是这样的:
auto brightness task
感兴趣的朋友可以打开Javascriptlet查看和修改具体的源代码.
### 添加自动调节情景
最后是要添加一个Profile来自动调节背光,理论上应该添加一个循环任务每隔一段时间调节一次,这样可以做到亮度的实时调节,但是比较费电。
我们假设用户操作手机的时候环境亮度变化不大(即用户拿出手机后不会从太阳底下掉到黑漆漆的下水道里),因此只需要在用户拿出手机、点亮屏幕的时候调节一次就可以了。如果出现环境亮度突然变化的情况,只需要关闭屏幕后再次点亮,屏幕亮度就会自动重新调节。
点此下载auto_brightness.prf_.zip,解压后在Tasker的Profiles标签页面下导入。
保存,最后在系统设置里将系统的自动背光调节关闭,在台灯下和被窝里分别开关屏幕看看效果吧。

总结

本文使用Tasker程序实现了一个自动调节屏幕亮度的应用,在我的山寨机上测试非常完美,如果你觉得自动调节的亮度偏亮或偏暗,可以修改全局变量%MBRTGAIN,调节范围建议为50~200之间。
如果需要实现文章开始图片中的光照强度和屏幕亮度显示及快速亮度调节对话框,欢迎留言或Email联系我。