PS:此方法乃论坛一位大神提供的,我只是做大自然的搬运工。
光感原理
现在的光感是一个传感器方案集成光感、距离两个感应器的。光感不像GPS那么多花样,安卓内核有各种传感器接口,只要驱动正确可以与CPU好好谈心,那么就能返回各种数据。对应亮度感应器,实质上是光敏电阻。这是一种随着照射在表面亮度线性增大根据各种材质不同,呈现大多非线性下降,一般绝大多数的光敏电阻都不是线性元件
IUNI的光感
IUNI U2的光感除去最低亮度时候最高阻值(额定暗电流最小值)、最亮时候最低阻值(额定亮电流最大值),中间只有3档。换句话说它的灵敏度并不高,实用性很差。通过校准,剔除温度特性,一般的光感可以达到大致线性地平滑输出准确亮度值,而U2的光感度数仅能返回最低值1lux、100lux、1000lux、10000lux、最高值30000lux。通常最低值和最高值是光感特性,必须存在的,而除非人为设计中间只取样3个数值,否则它基本是连续的,只要性能优秀且稳定,对温度影响做校准后优秀光感能输出非常连续细腻的亮度值。说那么多,一句话,U2的光感实在太破了!
解决方案
因为这坑爹的3档光感,已经严重影响了正常使用,实际使用会出现很奇葩的问题——你也只有5档亮度适应环境。全黑=1lux,室内=100lux,阴天室外=1000lux,晴天室外=10000lux,烈日=30000lux。也许IUNI当时也这么认为,这就是我们日常遇到的最经常情景了。但他们却没想到,会有中间一些亮度值存在。例如,在室外时候,由于某些环境略带遮蔽,亮度取值就会不断在100/1000之间跳动,因为手机角度不同亮度值稍有变化,恰好垮在1000lux这阻值上,左右来回,这就导致大伙们经常会发现的,怎么屏幕暗着忽然亮了,没多久又暗下去,忽然又亮了,折腾死人呢!
所以,我们为了让手机不忽明忽暗,唯一方法就是对亮度做插值。试想一下,假如在1000ms内,你手机因为环境亮度略变化(也许是你手晃动带来光感数据不同)而恰好让光感返回数据处于100/1000之间来回跳动,那么实际亮度值是多少呢?如果每200ms对传感器返回数据采样,那么1秒可以采样5次,如果前2次采样是100lux,后3次采样是1000lux,根据时间先后比例权重运算会得出一个大约800lux的亮度值作为当前实际亮度模拟值,而每200ms返回一次数据,最早一次数据就会被丢弃。当然一般都用至少5秒以上作为运算区间,且最新值权重最大,这样尽可能保证亮度变化稳定且快速响应尽量贴合目前亮度。而这样的结果就是,尽管与实际亮度有差别,但因为做加权平均值后亮度变化会变平滑,屏幕只会渐渐明暗不会忽然亮起来,其次在这种经常遇到的跨100/1000亮度之间的环境时候,因为插值数据大致会稳定在一个恒定值,所以手机就不会再调整亮度了,直到亮度明显变化。
而一个叫Lux Dash(又叫Lux Auto Brightness)的软件出现在我们视野内,它能实现所有上述功能。使用后效果如何?起码我不说光感有问题,大家用起来绝对不觉得是有问题的光感,而只会觉得它和别的手机相比区别不会很大。当然插值亮度不是真实亮度,极端完美主义者是没法满足了,肯定有细微差别的……
安装这个软件后,请按我说的设置去调整。
进入配置界面,你会看到设置导向、情景模式编辑器、亮度、夜间/天文模式、日落位置、样本采集、高级设置、清除设置、反馈信息、致谢这些选项。
(1)请在亮度中确保模式为自动调整,调整亮度变化速度为最快、亮度变化梯级为标准、亮度抖动控制百分比5%以下。
(2)请在高级设置中确保启用Lux被勾上,调整亮度样本插值为立方。
(3)请在样本采集中启用低通滤波器被勾上,确保随时间衰减被勾上。
(4)请在情景模式编辑器中,编辑你的亮度对应值:Lux1=亮度5%、Lux100=亮度15%、Lux1000=亮度30%、Lux10000=亮度50%、Lux30000=亮度100%,情景模式为日间。
(5)请把Lux加入启动项中,随机启动。
你如果喜欢暖色调,可以在夜间/天文模式中选择夜间模式勾上,以更好保护眼睛,减少蓝光刺眼感觉。在顶栏下拉看见的信息中,出现“背光亮度XX%”,下面有几个快捷控制,当你处于日间时候,可以按右边+号让亮度增加5%,同理夜间可以反过来操作,以适应环境,保护视力。点击背光亮度XX%会出现一个快捷调整窗口,确保处于动态调整、日间模式即可。
当你调整完毕,可以试着室内室外随便跑,大概再也不会出现忽明忽暗的情况了。