Android: Android Light Sensor HOWTO
16lz
2021-01-23
基于android 2.2 添加Light Sensor支持:
1) UI部分
2) framework部分
3) HAL 部分
4) Driver 部分
下面分别讨论:
1) UI部分
a) 打开亮度设置菜单的自动调整亮度checkbox
frameworks/base/core/res/res/values/config.xml :
- <boolname="config_automatic_brightness_available">false</bool>
+<boolname="config_automatic_brightness_available">true</bool>
b) 同时设置Lux级,亮度级,以5级亮度为例
<integer-arrayname="config_autoBrightnessLevels">
+<item>1000</item> +<item>2000</item> +<item>3000</item> +<item>4000</item> </integer-array> <integer-arrayname="config_autoBrightnessLcdBacklightValues"> +<item>20</item> +<item>80</item> +<item>120</item> +<item>160</item> +<item>250</item> </integer-array> autoBrightnessLevels 随便设,HAL层传上来的数据落在这几个值之间以区分级别 LcdBacklightValues 是5级亮度的实际值 2)framework部分 a) framework层的相关文件 ./core/java/android/hardware/SensorEvent.java ./core/java/android/hardware/SensorListener.java ./core/java/android/hardware/ISensorService.aidl ./core/java/android/hardware/Sensor.java ./core/java/android/hardware/SensorEventListener.java ./core/jni/android_hardware_SensorManager.cpp //SensorManager JNI ./core/java/android/hardware/SensorManager.java //SensorManager ./services/jni/com_android_server_SensorService.cpp //SensorSersvice JNI ./services/java/com/android/server/SensorService.java //SensorService ./services/java/com/android/server/PowerManagerService.java Sensor系统相对比较简单,我们需要修改的更少: 添加Light Sensor只需要修改SensorManager.java,PowerManagerService.java两个文件 b)SensorManager.java: c)PowerManagerService.java: 这里似乎一个系统bug 3) HAL 部分 实现hardware/libhardware/include/hardware/sensor.h接口,写一个HAL层, 这部分请参考我上一篇文章: android sensor HAL范例,那个例子写的好级啦 需要说明的一点是,android系统的所有sensor公用一个HAL层文件,所以如果你的系统已有其他sensor那么需要在其他 sensor的HAL实现中添加light sensor HAL层最终生成 /system/lib/hw/sensors.xxx.so 4) Driver 部分 不管啥接口的light sensor,请把它写成一个input设备, 通过/dev/input/eventX来提供数据 这样在HAL层polling的时候就可以 nread = read(ls_fd, &event, sizeof(event)); .light 最终传给 PowerManager,PowerManager根据config_autoBrightnessLevels数组 得到config_autoBrightnessLcdBacklightValues数据具体亮度值,然后调整亮度 比如 .light = 2500.0 3000.0< 2500.0 < 4000.0 对应的LcdBacklightValues 就是160 -- THE END --更多相关文章
- android9.0 系统默认时间修改
- android高版本系统源码下载和编译刷机
- Android之系统自带的文字外观设置及实际显示效果图 android:text
- Android系统启动
- Android打开系统设置界面
- 如何让android apk 获得系统权限
- Android Framework系统服务详解
- Android Webview调用系统相册实现多选图片上传
- android 系统属性 build.prop