android4.0和android2.3中对automatic brightness(背光调整)的策略是不一样的

来源:互联网 发布:淘宝九牧王卫浴保真吗 编辑:程序博客网 时间:2024/06/11 06:31
android4.0和android2.3中对automatic brightness(背光调整)的策略是不一样的


android4.0中,上层对HAL层关于背光的自动调整调用是正常的。
在~/mywork/403-sync/device/sprd/common/libs/liblights/lights.c中加入log发现。在自动背光调节过程中,上层会连续调用
set_light_backlight()
来根据light sensor上报的环境光线强度来设置背光。如下的logcat发现上层对背光的设置是向brightness 写入一串连续的值来缓慢过渡的,这样在用户看来就是屏幕慢慢的变亮或者变暗。体验很好。


E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 28. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 30. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 32. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 35. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 37. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 39. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 41. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 43. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 46. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 48. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 50. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 52. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 54. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 56. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 59. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 61. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 63. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 65. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 67. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 69. #####
D/gralloc.mali(   91): fps = 1.631608
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 72. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 74. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 76. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 78. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 80. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 82. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 84. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 87. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 89. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 91. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 93. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 95. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 97. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 100. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 102. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 104. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 106. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 108. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 110. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 113. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 115. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 117. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 119. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 121. #####
E/lights  (  250): ####******************************1*: sprd/lights.c: set_light_backlight() brightness = 123. #####


而在android2.3.5中,发现上层对该函数的调用只有3级,感觉不对劲,今天请应用的同事确认了一下,原来果真如此。2.3中上层对背光调整函数的调用分为三档
当light sensor上报的光强值小于20的时候,上层把背光设置为低档。所以如果light sensor上报的光强的最小值如果没有低于20的时候,上层在背光调整的时候就只能设置为两档了。而目前的light sensor驱动不知道是出于什么原因,把上报的最小值固定在35. 我实在想不通这样的意义何在。说实话,有些驱动写的真的有点扯淡。要是在以前,哥就把每个驱动都重写了。
原创粉丝点击