Android Q自动背光曲线调节
诺基亚客户对背光曲线有很明确需求,因此就将系统的背光曲线部分看了下,现将这个流程总结出来。
一,概念明确
背光的调节有与光相关的概念,需要首先明确下,后面我们会用到这些概念。
1,环境光:是指真实的环境光的亮度值(可用照度计测得)。
注意,这里要区分环境光与手机sensor感光,这中间会有误差,sensor是比较敏感的器件,同一光源下角度稍偏,sensor上报的值就会有很大变化,因此测试时,尽可能保证手机sensor与环境光是平行的,避免应角度带来的误差。一般情况下,sensor上报的值 < 环境光值 ,因为手机结构有玻璃等遮挡物,光线会有损耗。
2,Nit值:该值为人眼感知的光强度的度量单位。
3,手机背光:也称灰阶,是一个0-255的值,这是从上层设到驱动,并最终影响屏幕亮度的值。
4,手机屏幕亮度:手机屏幕的真实亮度,需要用特定仪器测试。
我们配置的是手机背光(0-255),至于特定背光下手机屏幕真正显示的亮度,与当前屏材质、电流大小等硬件参数有关。
二,配置
目标:客户的需求是得到 环境光—手机屏幕亮度 ,这两者之间的曲线关系。
系统给出来的配置接口:
config_autoBrightnessLevels —LUX
config_screenBrightnessBacklight ----DisplayNit
config_autoBrightnessDisplayValuesNits ----Nit
config_screenBrightnessNits -----BL
1,得到环境光 与 手机光感sensor器件 上报的光感值 之间的关系。因为软件配置的值都是通过手机光感sensor上报的值来的,但是真实的环境光与其有差异,因此需要找到两者之前的关系,并通过sensor上报的值反推环境光值。有了这个关系,我们就能从客户需求 环境光 —手机屏幕亮度 ,转换为 sensor上报感光----手机屏幕亮度
注意:如果发现用照度计测到的环境光 < sensor上报值,说明驱动有做补光的操作,将sensor检测到的环境光乘了 比例系数在上报了。
2,得到 背光等级与屏幕亮度之间的关系。这个需要CE通过仪器测量的出来,有了这个关系,我们就能将 sensor上报感光----手机屏幕亮度,转换为 sensor上报感光----背光等级。
到这里,我们要关注的就是 sensor上报感光----背光等级 之间的关系曲线了。
sensor上报感光 就是 config_autoBrightnessLevels —LUX
背光等级 就是 config_screenBrightnessNits -----BL
那么如果配置这两个变量之前的关系呢?
andorid有个自带的api,就是通过一组离散点来构建一个曲线。
Android系统提供了 4 个数组配置曲线,然后两两分组得到两条曲线,第一条就是LUX–DisplayNit,第二条就是 Nit—BL,注意曲线是可以有 x–y,也可以由y–x。
LUX–DisplayNit
Nit—BL
其中DisplayNit 与 Nit是同一个值,这样就把 LUX ----》 BL 通过两条曲线连接起来了。
下面,我们就要根据客户给出的 环境光 — 手机屏幕亮度 的离散点来配置了。
环境光 ----》 sensor上报感光 (LUX)----》DisplayNit ----》Nit ----》 BL ----》手机屏幕亮度
简化中间过程就是:环境光 ----》手机屏幕亮度,这也与我们的目标统一起来了。
按照这个关系,对应客户给出来的值,就能得到客户要求的背光曲线。
以下为一个配置的例子:
LUX是17个值,Nit是18个值,因为LUX有个默认的0没有没出来。
比如 0 <= LUX <= 16,对应的Nit为 Nit <= 33.07
比如 16 <= LUX <= 32,对应的Nit为 33.07<= Nit <= 49.81
依次类推。。。。。
每组对应配置的个数不限制(也可以是 LUX(20)-- Nit(21)),但是数据越多,曲线就越精准,也就更贴近客户的需求。
注意:关于Nit–BL这个组配置,展讯平台给出如下解释:
这部分是实际客户的设备的特性。需要测量。上表是某个显示设备的实际情况。
1.测量的方式,使用纯白的White的bmp测试pattern。
2.使用CA310/CA410 等色彩分析仪测试屏幕的亮度。
3.显示测试pattern,使用色彩分析仪测试屏幕的显示亮度。修改不同的背光等级进行逐一测试得到表格。
这组值与设备有关,通常不修改这组值,而是修改LUX—DisplayNit