这项功能涉及两个模块,光传感器和背光,光传感器采集周围环境的光感强度,上报给系统,系统通过PowerManagerService.java中设置背光值

1.powermanagerService 中实现自动调节背光

1.1 enableLightSensorLocked(Boolean enable){

if(enable){

mSensorManager.registerListener(mLightListener,mLightSensor,xxx);

}

}

在handleLightSensorValue函数中进行处理。

1.2 mHandler.postDelayed(mAuoBrightnessTask,LIGHT_SENSOR_DELAY);

1.3调用lightSensorChangedLocked(value,false);

1.4调用

mScreenBrightnessAnimator.animateTo(lcdValue,value,SCREEN_BRIGHT_BIT,steps*NORMAL_FRAME_TIME_MS);

2配置lcd相关背光值

函数initInThread中获取config_autoBrightnessLevels中的数组

If(mUseSoftwareAutoBrightness){

mAutoBrightnessLevels = resources.getIntArray(

com.android.internal.R.array.config_autoBrightnessLevels);

mLcdBackLightValues = resources.getIntArray(

com.android.internal.R.array.config_autoBrightnessLcdBacklightValues);

}

注意values可以选择mLcdBackLightValues作为参数,这样就将配置表中的值转化为了系统中使用的值

getAutoBrightnessValue(SensorValue,int [] values){

for(i=0;i

{

If(SensorValue

Break;

}

Final int minval = values[0];

Final int maxval = values[mAutoBrightnessLevels.length];

}

相关的数组定义在framework/base/core/res/res/values/config.xml

N个等级对应N+1个背光值,背光值应该满足0-255,背光系统节点

Sys/class/leds/lcd-backlight/brightness

3.上述分析可知:

作为光传感器获取的实际值通过驱动层上传到hal层,通过hal层poll到framework,为了减少配置文件调节可以在hal层或者kernel进行统一的映射,不会影响到自动调节背光的动画效果。

这样的好处就是多个项目时不必每次都去调节配置表。

例如:hal层中readEvents函数

调用

indextoValue(size_t index) const

{

Static const struct adcToLux{

Size_t adc_value;

Float lux_value;

} adcToLux[] = {

{150,10.0},

{800,160},

{900,225},

{1000,320},

{1400,1280},

};

Return adcToLux[ARRAY_SIZE(adcToLux)-1].lux_value;

}

android自动调节背光,android自动调节背光相关推荐

  1. android layout组件,Android UI学习 - Linear Layout, RelativeLayout

    1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...

  2. android:layout_gravity 和 android:gravity 的区别

    gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...

  3. Android横向伸缩,Android 实现伸缩布局效果示例代码

    最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...

  4. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  5. android window 大小,android popupWindow 中宽度莫名很大,求帮助?

    这个是popupwindow的内容xml(就是放了个ListView): android:layout_width="wrap_content" android:layout_he ...

  6. android radiobutton 分组,Android 第十课——UI RadioButton

    常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时 ...

  7. android单线字体,Android自定义字体

    在main文件夹下,新建assets/fonts文件,添加.otf文件 image.png 字体工具类 import android.app.Application; import android.g ...

  8. mp4 android自动播放,Android 使用VideoView播放MP4的简单实现

    使用VideoView播放MP4 播放示例 实现简单的播放功能,播放手机本地的MP4文件.不依赖任何第三方框架,不添加任何防腐剂. 添加一个系统自带的控制条. 申请权限 读取存储中的MP4文件 准备布 ...

  9. android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...

    我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...

  10. android 编程klinon,android - 您尚未接受以下SDK组件的许可协议

    android - 您尚未接受以下SDK组件的许可协议 这个问题在这里已有答案: 自动接受所有SDK许可证                                     34个答案 我下载了 ...

最新文章

  1. Open3DGen:从RGB-D图像重建纹理3D模型的开源软件
  2. linux conntrack命令 路由连接 跟踪表 显示删除监听记录
  3. 类,对象,方法的使用
  4. python 错误代码_PYTHON错误代码及解决办法
  5. 4.2 神经网络算法代码实现
  6. 《VMware Virtual SAN权威指南(原书第2版)》一1.5 什么是Virtual SAN
  7. stm32使用DAP下载程序
  8. zabbix3.x添加H3C网络设备详解
  9. 前端保存之前输入的值_前端基础进阶(一):内存空间详细图解
  10. 概率机器人-贝叶斯滤波
  11. MySQL下载安装与配置详细教程
  12. 2021 最新版《神经网络和深度学习》中文版.pdf
  13. 2021年全新UI界面1:1仿皮皮虾APP段子
  14. MySQL懒查询_MySQL 5.7查询sys.schema_redundant_indexes居然慢如蜗牛...
  15. 求树的最大宽度(层次遍历法)
  16. maven私服deploy-405错误
  17. 机器学习中的度量指标:ROC曲线,AUC值,K-S曲线
  18. 挑战杯一次出乎意料的比赛
  19. [Spark进阶]-- Spark Dataframe操作
  20. MySQL(1):新建表,增,删,改,查

热门文章

  1. 用C语言求和、找数组中的最大值以及求平均值
  2. css改变权重,1. CSS 权重
  3. 普通话/汉语的语音识别:DFSMN-CTC-SMBR模型
  4. 银联统一规范的收单业务消息域
  5. 专注世界排名的Alexa.com宣布关站
  6. 未来人工智能发展趋势
  7. 将上线的网站的域名代理到本地
  8. STM32cube HAL库 I2C实现LM75数字温度传感器温度读取,并串口打印
  9. 云研发 IDE Uncode:演示版发布(欢迎加入开发)
  10. 大数据在职研究生哪个好_在职研究生大数据专业怎么样?