1. 首先驱动需要先获取到2个power supply

kernel\msm-3.18\drivers\usb\phy\phy-msm-usb.c

motg->usb_psy.name = "usb";
motg->usb_psy.type = POWER_SUPPLY_TYPE_USB;
motg->usb_psy.supplied_to = otg_pm_power_supplied_to;
motg->usb_psy.num_supplicants = ARRAY_SIZE(otg_pm_power_supplied_to);
motg->usb_psy.properties = otg_pm_power_props_usb;
motg->usb_psy.num_properties = ARRAY_SIZE(otg_pm_power_props_usb);
motg->usb_psy.get_property = otg_power_get_property_usb;
motg->usb_psy.set_property = otg_power_set_property_usb;
motg->usb_psy.property_is_writeable= otg_power_property_is_writeable_usb;if (!msm_otg_register_power_supply(pdev, motg))psy = &motg->usb_psy;

kernel\msm-3.18\drivers\power\bq2570x\bq2570x_charger.c

 usb_psy = power_supply_get_by_name("usb");static int bq2570x_psy_register(struct bq2570x *bq)
{int ret;bq->batt_psy.name = "dc_o2";bq->batt_psy.type = POWER_SUPPLY_TYPE_BATTERY;bq->batt_psy.properties = bq2570x_charger_props;bq->batt_psy.num_properties = ARRAY_SIZE(bq2570x_charger_props);bq->batt_psy.get_property = bq2570x_charger_get_property;bq->batt_psy.set_property = bq2570x_charger_set_property;bq->batt_psy.external_power_changed = bq2570x_external_power_changed;bq->batt_psy.property_is_writeable = bq2570x_charger_is_writeable;ret = power_supply_register(bq->dev, &bq->batt_psy);if (ret < 0) {pr_err("failed to register batt_psy:%d\n", ret);return ret;}return 0;
}

2. 充电的闪电图标和充电动画启动逻辑
闪电图标启动逻辑:POWER_SUPPLY_TYPE_USB的power supply上报USB类型(CDP,DCP,USB)

power_supply_set_supply_type(bq->usb_psy, POWER_SUPPLY_TYPE_USB);
ret = power_supply_set_online(bq->usb_psy, true);
power_supply_changed(bq->usb_psy);

充电动画的启动逻辑:POWER_SUPPLY_TYPE_BATTERY的power supply上报充电状态(CHARGE_STATE_NOT_CHARGING,CHARGE_STATE_FASTCHARGE)

bq->charge_state = CHARGE_STATE_FASTCHARGE;
power_supply_changed(&bq->batt_psy);

3. 利用dumpsys分析当前battery 状态

V2_PRO:/ # dumpsys battery
Current Battery Service state:AC powered: falseUSB powered: trueWireless powered: falseMax charging current: 0Max charging voltage: 0Charge counter: 0status: 2health: 2present: truelevel: 46scale: 100voltage: 7temperature: 270technology: Li-ion

如上主要关注2个字段:
USB powered : true
那么闪电图标应该会出现
status: 2
那么充电动画应该启动了

同时我们还可以通过shell指令的方式启动充电图标和充电动画

dumpsys battery set usb 1

闪电图标应该会出现

dumpsys battery set status 2

充电动画应该启动了

dumpsys battery set usb 0

闪电图标消失

dumpsys battery set status 4

充电动画消失

Android 开机充电图标和充电动画相关推荐

  1. android电池充电动画,Android 开机充电图标和充电动画效果

    首先驱动需要先获取到2个power supply kernel\msm-3.18\drivers\usb\phy\phy-msm-usb.c motg->usb_psy.name = " ...

  2. android的充电图标显示

    最近RK3026的项目需要修改开机充电,才分析了android原生态的充电过程. 充电的代码和图标在system/core/charger中,会编译成名字为charger的可执行文件,打包进ramdi ...

  3. android 系统(34)--关机充电图标修改

    关机充电图标修改 关机充电图标修改 关机充电main函数 函数set_draw_anim_mode 函数pthread_mutex_init 函数bootlogo_init 函数alarm_contr ...

  4. android 9.0关机充电流程,充电图标和电量显示百分比修改

    android 9.0关机充电图标和字体修改 相关源文件 电量显示百分比字体替换 充电图标替换 相关源文件 system/core/healthd/healthd_draw.cppsystem/cor ...

  5. 高通android充电常用问题,高通平台android9.0充电电量,充电指示灯以及充电图标读取分析...

    第一部分     qpnq-qg.c static int qpnp_qg_probe(struct platform_device *pdev) { ....... INIT_WORK(&c ...

  6. Android系统自定义关机充电图标

    需求描述 关机充电图标的修改地址在哪里?替换照片有哪些格式要求? 实现方案 图片路径: system/core/healthd/images/ 关机充电: system/core/healthd/he ...

  7. android关机充电流程、充电画面显示

    一.Android正常开机流程.关机充电流程 在写这篇文章之前我们先看两个流程:正常开机流程,关机充电系统启动流程 1.正常开机流程,按开机键. 可大致分成三部分 (1).OS_level:UBOOT ...

  8. MTK 关机充电时充电IC正常,电池正常充电,但是充电动画一直显示0%

    MTK 关机充电时充电IC正常,电池正常充电,但是充电动画一直显示0% 平台 mt8168+mt6357+chargerIC 问题 MTK 关机充电时充电IC正常,电池正常充电,但是充电动画一直显示0 ...

  9. Android上电到现实充电画面,android 电池(二):android关机充电流程、充电画面显示(一)...

    上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么.充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路.我记得我 ...

  10. android 电池(二):android关机充电流程、充电画面显示

    上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么.充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路.我记得我 ...

最新文章

  1. libACE-6.3.3.so: cannot open shared object file: No such file or directory
  2. 全向飞行器的设计与制作-学生初步汇报内容
  3. Excel教程(12) - 数学和三角函数
  4. VTK:PolyData之ProcrustesAlignmentFilter
  5. 【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)
  6. 概述造船业ERP信息化的方法
  7. 微服务分布式架构中,如何实现日志链路跟踪
  8. 来,看我是如何把面试官问倒的!
  9. 一次生产内存溢出记录
  10. 在MySQL中使用正则表达式
  11. YOGA Tablet 2 1371f 触屏失效,无声卡,蓝牙键盘都无法使用的解决办法
  12. 80286计算机配置,电脑的各种配置给详的细解释.doc
  13. 通过优启通制作U盘启动安装Windows系统
  14. 只要5个步骤,教你开发一个自己的chrome扩展程序
  15. Notion为什么能让我放弃手账
  16. 下载文件downFile
  17. 微博爬取(Python)--中大微博前100条微博内容以及评论转发点赞数目爬取
  18. Android应用开发病虫害识别,基于Android系统的储粮害虫图像识别软件设计与实现...
  19. Python-打印乘法口诀表
  20. python编写代码求圆的面积_【Python】求圆的面积,书上的代码可执行却是0,不知道为什么...

热门文章

  1. Angular——Angular 教程
  2. delphi 创建一个纯文本文件
  3. python字符串转成数组_python将字符串转换成数组的方法
  4. ZooKeeper 安装与部署
  5. 逼死强迫症?聊聊应用推送角标的那些事儿
  6. 关于Alipay支付宝接口(Java版)下
  7. 不创建临时变量,交换两整数的值
  8. 斯坦福NLP笔记6 —— Defining Minimum Edit Distance
  9. 如何让你的SQL运行得更快(二)
  10. Microsoft® .NET Micro Framework简介