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<mAutoBrightnessLevels.length;i++)
{
	If(SensorValue<mAutoBrightnessLevels[i])
		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层,通过halpollframework,为了减少配置文件调节可以在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;
}


 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newtonnl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值