手机屏幕亮度自动调节功能是如何实现的( 二 )


(2)采用了这个模型后 , 还提供用户在设置中调节当前感光强度对应的亮度 , 比如说当前感光强度为6400 , 亮度修改为220 , 模型就变化成为:

手机屏幕亮度自动调节功能是如何实现的

文章插图
原有的一条直线变成两个线段 , 这样当以后感光强度为6400时 , 亮度就自动为220 。其它的感光强度也相应的加以修正 。有了这个模型 , 可以真正的自动亮度了 , 感光强度一变化 , 亮度就能跟着变化 。
光源感应器是非常敏感的 , 当轻轻的晃动一下手机或者头往前凑点 , 感光强度马上改变 , 这样屏幕就会忽亮忽暗 。这是无法忍受的 , 这个时候明白了为啥原生系统只变亮不变暗了 , 就是为了防止这个情况的发生 。
(3)这个时候 , 必须找到一个既可变亮也可变暗 , 同时不能让屏幕亮度变来变去的办法 。一开始的想法很简单 , 当发现感光强度变化比较大的时候 , 就开始变暗 。但是这个想法也被证实太天真了 , 光源感应器实在太脆弱了 , 哪怕在室内开着灯的情况下 , 当把手机翻转过来的时候 , 感光强度为10 , 这个强度一般是非常暗的环境下的感光强度 。这样的话 , 手机屏幕亮度还是会变来变去 , 在咨询光源感应器的生产厂商得知这个在硬件中变化就慎掘岁是这样 , 无法改变 。采取了一个折衷的方案 , 在一段时间内 , 开始采样 , 记录感光强度所有的变化值 , 如果在这段时间内 , 所有记录的感光强度值都比较低 , 屏幕会开始自动变暗 。对于到更亮的环境下 , 原理是一样的 , 这可以防止屏幕亮度的突变 。CM提供设置让用户是否采样 , 采样的持续时间是多长 , 采样的间隔是多久 。采用了3秒作为采样时间 , 并且根据感光强度的变化自动调节采样间隔 。经过测试 , 加上亮度可调节 , 应该能在避免复杂设置的情况下满足要求 。一个看似简单问题的背后并不简单 。

推荐阅读