根据测试描述和本地测试复现步骤和现象如下:
- 用遮光板遮挡 L-sensor,屏幕亮度调节条无法到达最左端
- 手动滑动屏幕亮度调节条到最左端再重复上一步骤,屏幕亮度调节条鈳以到最左端
- 恢复出厂设置清除数据等操作均无法保证在 L-sensor 被遮挡时进度条到最左边
1. 拿到背光曲线的配置表:
2. 根据配置表去查看代码中背咣曲线的mapping配置
通过需求表和配置的mapping数组关系,没发现任何问题
除了使用dump PMS(PowerManagerService)还可以在代码中加log查看屏幕亮度调节条变化到不同位置时候nit(光照强度)和 brightness(背光强度)之间的映射关系,通过对比实际打印出的mapping关系和xml配置的mapping关系作对比看是否一致
对比了一下,发现问题根因:
究其根因在于BSP同事在device下配置完成后,并未验证而device下的overlay是静态overlay,而vendor下配置的mapping映射数组是动态overlay优先级大于device,在运行时device下的配置并未生效拟合的背光曲线还是用了vendor下错误的mapping数组,导致出现该问题
这个问题当时在使用Pixel原生机时也是必现原因应该如出一辙。
当然既然找箌了原因,最终这个问题解决的方法也就很明了将device下的配置的背光mapping映射数组的数据迁移到vendor下的mapping数组中,问题解决
通过解决这个问题了解了Android在背光曲线这块的逻辑,转载了一篇文章写的挺好,大家有空可以看看做个参考