基于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 --

更多相关文章

  1. android9.0 系统默认时间修改
  2. android高版本系统源码下载和编译刷机
  3. Android之系统自带的文字外观设置及实际显示效果图 android:text
  4. Android系统启动
  5. Android打开系统设置界面
  6. 如何让android apk 获得系统权限
  7. Android Framework系统服务详解
  8. Android Webview调用系统相册实现多选图片上传
  9. android 系统属性 build.prop

随机推荐

  1. android GLSurfaceView匹配屏幕宽度及视
  2. Android自动登录 记住用户名密码实现 Sha
  3. 如何root Android 4.0 / 4.1 的手机
  4. android phoneGap开发
  5. mac下配置使用android studio
  6. Android 使用摄像头。
  7. Android NDK 内存泄露检测
  8. Ubuntu 安装Android studio配置
  9. imageView/Button的selector用法
  10. android第三周小结