Android 开机充电图标和充电动画

今日长缨在手,何时缚住苍龙。这篇文章主要讲述Android 开机充电图标和充电动画相关的知识,希望能为你提供帮助。

  1. 首先驱动需要先获取到2个power supply
kernelmsm-3.18driversusbphyphy-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;

kernelmsm-3.18driverspowerq2570xq2570x_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 " , ret); return ret; }return 0; }

  1. 充电的闪电图标和充电动画启动逻辑
闪电图标启动逻辑: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);

  1. 利用dumpsys分析当前battery 状态
V2_PRO:/ # dumpsys battery Current Battery Service state: AC powered: false USB powered: true Wireless powered: false Max charging current: 0 Max charging voltage: 0 Charge counter: 0 status: 2 health: 2 present: true level: 46 scale: 100 voltage: 7 temperature: 270 technology: Li-ion

如上主要关注2个字段:
【Android 开机充电图标和充电动画】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
充电动画消失

    推荐阅读