Android获取电池电量和电池容量

测试APK,获取电量信息,做一些耗电相关的测试,必须要用到一段时间内的耗电百分比,和当前手机的电池容量,计算出平均的耗电电流

1. 获取电池电量百分比

    可以使用BatteryManager,废话不多说上代码:

    BatteryManager manager = (BatteryManager)context.getSystemService(context.BATTERY_SERVICE);

    int currentLevel = manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);


2. 获取电池容量

    查了好久,没有找到直接获取的方式,获取电池容量可以通过java反射 PowerProfile类获取(PowerProfile.java,实际是读取power_profile.xml读取,xml中保存了当前机型的场景下的耗电系数或这一些固定的值  比如: 每个CPU频点的耗电系数  子系统的耗电系数、总电量等信息)

Object mPowerProfile;

double batteryCapacity =0; //电池的容量mAh

final String POWER_PROFILE_CLASS ="com.android.internal.os.PowerProfile";

try {

mPowerProfile = Class.forName(POWER_PROFILE_CLASS).getConstructor(Context.class).newInstance(context);

    batteryCapacity = (double) Class.forName(POWER_PROFILE_CLASS).getMethod("getBatteryCapacity").invoke(mPowerProfile);

}catch (Exception e) {

printLog("get batteryCapacity mAh error: " + batteryCapacity);

    e.printStackTrace();

}



引申:

获取power_profile.xml文件,

1. 没有办法直接获取

2. 通过拿到手机中framework-res.apk(APK路径 /system/framework/)然后反编译APK

3.反编译后存在于res/xml/power_profile.xml(Android工程中存放的路径)

4. 反编译APK 参考:https://www.jianshu.com/p/dba82e730cf7

对应的power_profile.xml

  <item name="battery.capacity">3120</item>  整个是电池容量

<array name="cpu.core_speeds.cluster0">  CPU 小核的所有频点

      <value>300000</value>

      <value>576000</value>

      <value>748000</value>

      <value>998400</value>

      <value>1209600</value>

      <value>1324800</value>

      <value>1516800</value>

      <value>1612800</value>

      <value>1780000</value>

  </array>


  <array name="cpu.core_power.cluster0">  CPU小核对应每个频点满负荷的功耗

      <value>31.84</value>

      <value>35.91</value>

      <value>37.69</value>

      <value>45.77</value>

      <value>53.89</value>

      <value>59.62</value>

      <value>66.80</value>

      <value>72.52</value>

      <value>80.99</value>

  </array>


系统常用的一些场景的耗电量,列出来几个

<item name="screen.on">64.19</item>

  <item name="bluetooth.active">9.22</item>

  <item name="gps.on">132.43</item> <!-- ~50mA -->

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文由作者张迎贞授权网易云社区发布。 APP性能测试除了需要监控PCU、内存占用、流量等,还需要获取APP的电量数...
    43ce3d72fadb阅读 830评论 0 0
  • 随着人们对手机的越来越依赖,App Store的APP种类越来越多,要想脱颖而出,性能也就显得尤其重要,而APP的...
    sunnyaxin阅读 6,562评论 0 4
  • 空幻書郎 整日机声震耳 终生劳累繁忙 加班归家见空房 顿觉全身荒凉 赶紧脱衣上床 梦里呼唤妻娘 醒来巳近拂晓时 才...
    暮游客阅读 450评论 4 8
  • 1: 家庭吵架的原因 两家人住隔壁,一家人整天吵架,吵的要命。另一家人都和和气气,不吵架。于是,这个天天吵架的人...
    巴丹阅读 248评论 0 2