android自动调节背光,android自动调节背光
这项功能涉及两个模块,光传感器和背光,光传感器采集周围环境的光感强度,上报给系统,系统通过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自动调节背光相关推荐
- android layout组件,Android UI学习 - Linear Layout, RelativeLayout
1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...
- android:layout_gravity 和 android:gravity 的区别
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...
- Android横向伸缩,Android 实现伸缩布局效果示例代码
最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...
- android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...
本文将带你了解Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...
- android window 大小,android popupWindow 中宽度莫名很大,求帮助?
这个是popupwindow的内容xml(就是放了个ListView): android:layout_width="wrap_content" android:layout_he ...
- android radiobutton 分组,Android 第十课——UI RadioButton
常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时 ...
- android单线字体,Android自定义字体
在main文件夹下,新建assets/fonts文件,添加.otf文件 image.png 字体工具类 import android.app.Application; import android.g ...
- mp4 android自动播放,Android 使用VideoView播放MP4的简单实现
使用VideoView播放MP4 播放示例 实现简单的播放功能,播放手机本地的MP4文件.不依赖任何第三方框架,不添加任何防腐剂. 添加一个系统自带的控制条. 申请权限 读取存储中的MP4文件 准备布 ...
- android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...
我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...
- android 编程klinon,android - 您尚未接受以下SDK组件的许可协议
android - 您尚未接受以下SDK组件的许可协议 这个问题在这里已有答案: 自动接受所有SDK许可证 34个答案 我下载了 ...
最新文章
- Open3DGen:从RGB-D图像重建纹理3D模型的开源软件
- linux conntrack命令 路由连接 跟踪表 显示删除监听记录
- 类,对象,方法的使用
- python 错误代码_PYTHON错误代码及解决办法
- 4.2 神经网络算法代码实现
- 《VMware Virtual SAN权威指南(原书第2版)》一1.5 什么是Virtual SAN
- stm32使用DAP下载程序
- zabbix3.x添加H3C网络设备详解
- 前端保存之前输入的值_前端基础进阶(一):内存空间详细图解
- 概率机器人-贝叶斯滤波
- MySQL下载安装与配置详细教程
- 2021 最新版《神经网络和深度学习》中文版.pdf
- 2021年全新UI界面1:1仿皮皮虾APP段子
- MySQL懒查询_MySQL 5.7查询sys.schema_redundant_indexes居然慢如蜗牛...
- 求树的最大宽度(层次遍历法)
- maven私服deploy-405错误
- 机器学习中的度量指标:ROC曲线,AUC值,K-S曲线
- 挑战杯一次出乎意料的比赛
- [Spark进阶]-- Spark Dataframe操作
- MySQL(1):新建表,增,删,改,查