客制化充电指示灯的文章在网上也有不少了,项目的需求是在百分百情况下量绿灯,其它情况下都是红灯,这里简单记录下在Android11,kernel-4.19版本下的修改内容,也给有相关需求的各位提供下思路。
系统内上层的充电指示主要靠BatteryService下的BatteryManager负责管理,这里通过监测返回的status来提供指示的判断标准,具体修改部分如下:

old mode 100644
new mode 100755
index 8dd4fa6d8fd..04f70e1d836
--- a/frameworks/base/services/core/java/com/android/server/BatteryService.java
+++ b/frameworks/base/services/core/java/com/android/server/BatteryService.java
@@ -1117,7 +1117,7 @@ public final class BatteryService extends SystemService {}} else if (status == BatteryManager.BATTERY_STATUS_CHARGING|| status == BatteryManager.BATTERY_STATUS_FULL) {-                if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {+                if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 100) {// Solid green when full or charging and nearly fullmBatteryLight.setColor(mBatteryFullARGB);} else {...

另一部分就是LK充电指示,即设备关机充电显示,MTK平台在external下有专门的关机充电逻辑及LOGO显示代码,找到charger文件,里面的charging_control.cpp有对LK下充电的一系列控制逻辑的实现,具体修改部分如下:

diff --git a/vendor/mediatek/proprietary/external/charger/charging_control.cpp b/vendor/mediatek/proprietary/external/charger/charging_control.cpp
index 306cb94230d..4cd58c61b8e 100755
--- a/vendor/mediatek/proprietary/external/charger/charging_control.cpp
+++ b/vendor/mediatek/proprietary/external/charger/charging_control.cpp
@@ -310,7 +310,7 @@ static int on_uevent(const char *buf, __attribute__((unused))int len_buf){bc = get_capacity();-               if (bc >= 99) {+               if (bc > 99) {lights_full();} else {if (nCurrentState != LIGHTS_STATE_CHGON)...

简单提及下,内核灯的定义:

led0:led@0 {compatible = "mediatek,red";led_mode = <0>;data = <1>;pwm_config = <0 0 0 0 0>;};
led1:led@1 {compatible = "mediatek,green";led_mode = <0>;data = <1>;pwm_config = <0 0 0 0 0>;};led2:led@2 {compatible = "mediatek,blue";led_mode = <0>;data = <1>;pwm_config = <0 0 0 0 0>;};

手动控制部分可以通过adb,在sys/class/leds下会枚举相应的灯,通过进入对应灯的目录设置brightness的大小就能实现简单的控制。这里不同项目名字可能会有稍微的不同,请具体参考驱动.c内ATTR创建的节点名称。

Android 11.0 充电指示灯红绿显示简单客制化相关推荐

  1. Android 系统序列号从哪里来,以及客制化序列号

    Android 系统序列号从哪里来,以及客制化序列号 系统获取序列号过程 客制化序列号 系统获取序列号过程 Android系统的SN号,实际是从"cmdline"里面的" ...

  2. android 11.0 开机动画横屏显示

    目录 1.概述 2.开机动画横屏显示的核心代码部分 3.开机动画横屏显示的核心代码部分分析以及实现功能

  3. 猿创征文|Android 11.0 12.0Launcher3 时钟动态图标的定制化

    目录 1.概述 2.Launcher3 时钟动态图标的定制化的核心代码 3.Launcher3 时钟动态图标的定制化的代码功能分析

  4. 完成谷歌Android设置向导,Android RRO机制的运用-----google开机向导客制化

    上周五的时候领导分了一个任务,客户让在google开机向导里面增加一页,首先就想到了android的Overlay,然后网上搜了下,发下有很多人写了这方面的技术.而且写的都还不错,所以本篇只当记录作用 ...

  5. Android 11.0 锁屏页面时钟显示样式

    一.需求分析 Android 11.0系统默认的锁屏时钟 年月日 显示的样式不符合需求,现在需要定制化.下图是系统默认的时间样式. 目标是改成这样: 二.核心代码路径 frameworks/base/ ...

  6. MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制。

    MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制: 1.电池充电.低电状态提示(红绿双色).(LIGHT_ID_BATTERY) 小于15%时: A 正在充电 亮红 ...

  7. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  8. Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限

    目录 1.概述 2.Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限的核心类 3.Android 11.0 无源码apk授予QUERY_ALL_

  9. Android 11.0 支持exfat格式

    点滴积累,记录自己的成长. 最近系统要支持exfat格式,参考了大佬们的帖子之后,终于搞定了. 由于之前都是Android.mk,自己系统中使用的Android.bp,而且要求以模块的形式调用对应的k ...

最新文章

  1. Java泛型详解,通俗易懂只需5分钟
  2. maven依赖包下载地址
  3. java 504错误怎么解决_求助java.lang.NoClassDefFoundError怎么解决,报错信息如下
  4. java types.varchar_java statement.registerOutParameter(5, java.sql.Types.VARCHAR)返回值长度限制...
  5. 真无线蓝牙耳机霸主之争:苹果AirPods和索尼WF-1000XM3怎么选?
  6. 管理之道(七) - 不可奖励员工错误的行为
  7. 微信发朋友圈/评论/点赞/搜索 测试用例点
  8. 信息学奥赛一本通在线评测平台的一些bug
  9. 字符串的getBytes方法
  10. 如何为SharePoint文件添加标记
  11. 利用vim编辑器创建和编辑正文文件
  12. 使用Kaiju无组装计算宏基因组数据物种注释相对丰度
  13. 拉依达准则的python代码
  14. 2020-09-22Python爬取基金的排名信息,写入excel中方便挑选基金
  15. JAVA-Swing技术
  16. GitHub下载加速网站
  17. 今日头条:注册头条号3-7天就度过,掌握这四个关键点
  18. win10 + neo4j + jdk 完美安装教程 欲哭无泪贴!!教你彻底卸载老的jdk!
  19. 关于LINUX系统编程架构问题——4412 camera V4L2 RTMP流工程源码分析
  20. 使用opencv 识别圆圈

热门文章

  1. 优质的草图大师素材 草图66!
  2. Qt开发经验总结之武林秘籍
  3. 阿里CTO程立:科技公司的技术创新和责任担当
  4. Smart-doc的脚本生成在线文档(精简官方文档描述)
  5. tornado 自定义WEB框架 、与Tyrion组件做表单验证
  6. Win7系统打印机不能打印的问题
  7. 快速设置Revit模型材质(Dynamo和API)
  8. Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
  9. python矩阵点乘和叉乘_NumPy点积:取向量积的乘积(而不是求和)
  10. 找不到实时聊天软件?给你推荐电商企业都在用的!