Android7.1 控制背光流程

背光调节通信图,如下
在这里插入图片描述
如论上层哪里控制背光,上图部分是共用的流程,每次设置一个新的背光值,都会从上一个背光值开始,在RampAnimator.java以计算出的步长调整背光到目标背光值,因此是一个渐变的过程。

所有调节背光都是PowerManagerService.java调用DisplayManagerService.java的requestPowerState函数。

Android7.1 背光初始化
在这里插入图片描述
总结


  1. android背光控制,没有背光曲线;
  2. 背光频率根据硬件电路设计确认,硬件提供;
  3. 调节背光值得最大值和最小值,确保当在最大值或最小值时,满足屏背光电压电流要求
  4. 开机动画阶段背光值不是存在于数据库中,因此开机动画阶段背光值不是launcher起来后的背光值,背光值分为三个阶段的值:
    a、boot阶段的背光值
    b、system_server初始化时的默认值,配置在frameworks\base\packages\SettingsProvider\res\values\defaults.xml中
    c、launcher起来应用设置的背光值,从数据库中取值,若新升级的系统,也是从frameworks\base\packages\SettingsProvider\res\values\defaults.xml获取初值。
    d、若三个阶段的默认值不同,开机过程会出现背光变化或黑屏。
  5. 在背光范围未调好时,初值配置不合理,开机过程会出现黑屏(实际未黑屏,只是亮度太低)
  6. 根据硬件测量屏背光的电流电压值,调整背光的最大值、最小值,配置在android\frameworks\base\core\res\res\values\config.xml中,分别为:config_screenBrightnessSettingMinimum、config_screenBrightnessSettingMaximum

全志a40i背光调试


1、设置默认值、最小值、最大值
代码位置:android\frameworks\base\core\java\android\os\PowerManager.java

public int getMinimumScreenBrightnessSetting() {
//return mContext.getResources().getInteger(
// com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
//=====keven modify 2014-04-15=
int sysmin = mContext.getResources().getInteger(
com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
int limitmin = SystemProperties.getInt(“ro.yj.minbrightness”,0); //modify by momkey for ro.yj.minbrightness
return limitmin == 0 ? sysmin : limitmin;
//=====keven modify 2014-04-15=
}

/**

  • Gets the maximum supported screen brightness setting.
  • The screen may be allowed to become dimmer than this value but
  • this is the maximum value that can be set by the user.
  • @hide
    */
    public int getMaximumScreenBrightnessSetting() {
    //return mContext.getResources().getInteger(
    // com.android.internal.R.integer.config_screenBrightnessSettingMaximum);
    //=====keven modify 2014-04-15=
    int sysmax = mContext.getResources().getInteger(
    com.android.internal.R.integer.config_screenBrightnessSettingMaximum);
    //int limitmax = SystemProperties.getInt(“ro.bright.limitmax”,0);
    int limitmax = SystemProperties.getInt(“ro.yj.maxbrightness”,0);//modify by momkey for ro.yj.maxbrightness
    return limitmax == 0 ? sysmax : limitmax;
    //=====keven modify 2014-04-15=
    }

/**

  • Gets the default screen brightness setting.
  • @hide
    */
    public int getDefaultScreenBrightnessSetting() {
    modify by momkey start for ro.yj.defaultbrightness///
    int YJint = 0;
    YJint = SystemProperties.getInt(“ro.yj.defaultbrightness”, 0);
    if(YJint > 0) {
    System.out.printf(“ro.yj.defaultbrightness is %d\n”, YJint);
    return YJint;
    }
    modify by momkey end for ro.yj.defaultbrightness
    return mContext.getResources().getInteger(
    com.android.internal.R.integer.config_screenBrightnessSettingDefault);
    }
    最小值最大值控制最小最大占空比,使不超过屏支持范围

默认值需要修改属性配置和config.xml,否则开机是开机动画阶段亮度和正常启动后亮度不同

2、sys_config.fex配置
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 20
lcd_pwm_pol = 1
lcd_pwm_max_limit = 250

重点:lcd_pwm_freq
该值并不是实际的背光芯片频率,该值和硬件设计的电路有关,根据硬件设计实际测量设定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值