Android L系统mtk平台下AAL自动背光调整服务亮度曲线调试需要涉及的地方

如果你想修改MTK的AAL自动背光调整相关的内容,那么根据情况,可能需要涉及如下文件:

这是Android L版本的,对于新的版本文件名字,mtk可能作调整。

主要涉及的文件是:

1)cust_aal.cpp
2)DisplayPowerController.java
3)AutomaticBrightnessController.java
4)libaal.so MTK的AAL自动背光调整服务用到的库
5)具体硬件driver的 pwm led。
6)另外,除了cust_aal.cpp和als驱动的实现get als的方法,可以通过als转换来影响亮度外,即als raw data 改为als value, 16段折线拟合。参见代码cm36652.c的cm36652_read_als()获取raw als data,然后cm36652_get_als_value()根据cust_aal.cpp的.als_level[], .als_value[],来返回als转换后的als sensor值,进而影响AAL service的背光走向。 新的驱动架构中,.als_level[], .als_value[]是在.dts文件中描述。
请注意,原来的驱动,对als_level和als_value只是区间内的值都是als_value[i]这种固定值,而不是区间内做线性拟合值,所以需要修改
,参见我在mt6753中的cm3232.c中对cm3232_get_als_value()函数的修改。
另外setting的亮度条的亮度设置也可以影响AAL service设置背光的亮度。 从而达到提高亮度、降低亮度等目的。应用接口是Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); 和Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,systemBrightness);
所以MTK的AAL service的根据环境光亮度调节还是很丰富的,满足大部分需求。
即als_level和als_value描述的是raw_als到als的映射曲线,进而影响亮度调节。
而setting影响此映射曲线的倍数系数(当然最小值仍然是0亮度,最大值仍然是亮度255(8bit)/1023(10bit)),即相当于选择了不同的映射曲线,即曲线偏亮还是偏暗。

float value = Settings.System.getFloatForUser(mContext.getContentResolver(), Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, 0, UserHandle.USER_CURRENT);
Settings.System.putFloatForUser(mContext.getContentResolver(), Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, adj, UserHandle.USER_CURRENT);
adj的值从-1到1的取值范围。
以及:
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
mPower = IPowerManager.Stub.asInterface(ServiceManager.getService(“power”));
mPower.setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(adj); 实现。具体参考代码BrightnessController.java

8)关于als调节背光的响应速度:
其实,另外从代码DisplayPowerController.java的构造函数的代码实现来看,可以看出,几个config.xml配置值也影响相应的亮度。
例如:
config_autoBrightnessLevels[]和config_autoBrightnessLcdBacklightValues[],影响的是light sensor上报的.als_value(注意不是.als_level)时,对应的lux,与level[n]和value[m]之间的关系。即也是lux和亮度值之间的曲线范围。
另外注意screenBrightne***angeMinimum值的取值。
config_screenBrightnessSettingDefault值
另外还有一些scale计算。
另外注意config_autoBrightnessLightSensorRate值。

涉及的主要参数是:
BRIGHTNESS_RAMP_RATE_BRIGHTEN 从 BRIGHTNESS_RAMP_RATE_SLOW调为fast,即从40变为200。 目前使用150
BRIGHTNESS_RAMP_RATE_DARKEN 从 BRIGHTNESS_RAMP_RATE_SLOW调为fast,即从40变为200。目前使用150
选为fast
AMBIENT_LIGHT_HORIZON 从10000,调为1000 即als sensor的稳定系数。
BRIGHTENING_LIGHT_DEBOUNCE 从4000, 调为500,新代码改为mBrighteningLightDebounceConfig,此值参见DisplayPowerController.java中com.android.internal.R.integer.config_autoBrightnessBrighteningLightDebounce。即config.xml的值。
DARKENING_LIGHT_DEBOUNCE 从8000, 调为500,新代码改为mDarkeningLightDebounceConfig
BRIGHTENING_LIGHT_DEBOUNCE和DARKENING_LIGHT_DEBOUNCE这两个变量表示,framework发现als亮度发生变化后,需要多久才会启动AAL去做PWM调节。值越低,表示亮度越敏感。
SCREEN_DIM_MINIMUM_REDUCTION 从10变为2,减少最小步幅,可以减少跳变的感觉。
新版本代码还有一个BRIGHTNESS_ADJUSTMENT_SAMPLE_DEBOUNCE_MILLIS, 从10000ms改为1000。
那么结果是,从探测到要变到变完,1.5秒以内就完成。所以还是比较快的。

另外AAL service往下设置的初始值在cust_aal.cpp中的InitBrightness中设置。
这个值从0到1023,即8bit的255变为10bit的1023

9)由于CABC还会影响到背光的变化,所以调整亮度曲线时,可以根据需求关闭CABC、CABL。
在project的cust_aal.cpp中, 添加int InitFunction = 4; // 0: all off, 2: cabc, 4: dre

具体请参考我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

我的新的更多优惠的打包课程链接如下:
https://edu.51cto.com/sd/0a9d4

转载于:https://blog.51cto.com/8906847/2367862

Android L系统mtk平台下AAL自动背光调整服务亮度曲线调试需要涉及的地方相关推荐

  1. Android L系统 剖析安卓5.0安卓L新特性

    Android L系统全新发布了!在Google I/O 2014上,Google正式发布了最新一代安卓系统Android L,安卓系统终于告别了安卓4.×,迈入了全新的版本周期.新一代安卓系统此前一 ...

  2. (15.1.14)Google正式发布Android L系统 剖析安卓5.0安卓L新特性

    Material Design.卡片.环动式设计 ART.64位计算 升级.电池续航.安全 Android L系统全新发布了!在Google I/O 2014上,Google正式发布了最新一代安卓系统 ...

  3. WIN10系统双屏拓展无法使用360桌面助手调整屏幕亮度的解决办法(伪)

    在使用双屏拓展时,发现360桌面助手是无法适用的,拓展后别说双屏了,单屏都失效了,看了360的论坛,从2017年至今这个问题一直未解决,偶然修改系统设置的时候发现WIN10其实已经自带这个功能了,而且 ...

  4. android手机系统的启动流程-secureboot流程(以MTK平台为例)

    ★★★ 个人博客导读首页-点击此处 ★★★ MTK平台下的secureboot流程图: 镜像的验证方法:

  5. 开发者须知:关于 Android L 的一切

    Google在I/O 2014大会上发布了全新移动操作系统Android L的开发者预览版本,相对于上一版本来说,Android L在UI风格.界面切换.和原生应用等各方面都发生了比较大的变化,目前该 ...

  6. 六个细节改变提升 Android L 用户体验

    导语:美国科技博客Android Authority近期刊文称,谷歌在I/O开发者大会上发布了新版Android L系统,并公布了这一系统的新特性,包括对通知的重新设计.菜单的调整,以及Android ...

  7. 百度android apk 加固,百度宣布开放应用加固技术 支持Android L应用

    腾讯科技讯(乐天)9月3日消息, 据了解,百度手机卫士正在建立移动安全平台,将输出"反病毒.反骚扰.应用保护"三个方面的移动安全能力,其中,应用加固服务是应用保护能力的核心技术. ...

  8. ANDROID L——Material Design详解(动画篇)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  9. note3 android l,KingRoot: 独家宣布,一键Root Android L版三星手机

    Android  5.0 Lollipop(以下简称Android L)是继4.0之后的一次重大更新,其最大的变化在于UI用户界面的设计,新的Android L系统用户界面更加简洁.色彩更加丰富,因此 ...

最新文章

  1. ConcurrentHashMap实现原理--转载
  2. 使用Docker Compose 搭建lnmp
  3. 关于setTimeout
  4. css3-6 表格如何设置样式和定位样式是什么
  5. mysql 列 随机数_mysql mmp 某字段插入随机数!(说不定那天就忘记了,存下来再说)...
  6. 二分图最大匹配 - 匈牙利算法
  7. 查询某字段不重复记录的SQL语句
  8. 编译原理 第三章 上下文无关文法与语法分析
  9. Win10提示未插入扬声器或耳机
  10. dreamweavercc 数据库_Dreamweaver CC
  11. MzTreeView(梅花雪)
  12. PostScript 打印机打印内存不足错误消息
  13. html2canvas.js 截屏微信头像不显示
  14. ERC-3525 通过倒计时 SFT 是什么?有什么用?
  15. 转载:使用expdp/impdp进行数据库迁移
  16. python练习——实现质数检测,编写isprime()函数,参数为整数,并且需要有异常处理功能。
  17. Java安装教程(windows)
  18. 制作windows服务(java)
  19. java eclipse 查看版本_怎么查看eclipse的版本号
  20. Microsoft Office SharePoint Designer 2007 (FrontPage) 2007 介绍

热门文章

  1. 11.2.0.3.7 PSU补丁升级
  2. javascript中call和apply的区别
  3. 在win7下搭建php+apache+mysql环境
  4. 09年3月编程语言排行榜:Visual Basic与PHP的暗战
  5. Ansible批量修改root密码
  6. 【MySql】MySql存储,游标,循环的简单使用
  7. 美图技术博客之地理空间距离计算优化
  8. Android架构:认识简法设计与EIT软件造形(序)
  9. SIEM比以往更重要的5个原因
  10. Thread.join的作用和原理