zoukankan      html  css  js  c++  java
  • 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个字段:

    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

    充电动画消失

  • 相关阅读:
    iOS sqlite3
    NSObject常用方法
    驱动项目设置中混淆点小记
    globalsign代码签名最新步骤
    Web学习资源及手册查询整理
    H5基于iScroll实现下拉刷新,上拉加载更多
    移动端meta标签
    一、开发过程中遇到的js知识点总结(1)
    vue API 知识点(4) --- 指令、特殊 attribute 、内置组件
    vue API 知识点(3) --- 实例 总结
  • 原文地址:https://www.cnblogs.com/linhaostudy/p/12070910.html
Copyright © 2011-2022 走看看