美文网首页
Android获取电池电量和电池容量

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

作者: new和光同尘 | 来源:发表于2019-07-11 14:35 被阅读0次

测试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 -->

相关文章

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

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

  • react-native 获取设备网络适配器MAC地址(reac

    React Native iOS和Android的设备信息,比如["获取应用程序名称","获取设备的电池电量为浮点...

  • Flutter创建oc项目

    创建测试项目 我们这里创建一个获取电池电量信息的项目,分别通过iOS和Android原生代码来获取对应的信息: 创...

  • Android获取电池电量

    方法一:注册广播(被动接受) 方法二:通过执行命令(不需要root) 通过 adb shell dumpsys b...

  • Android 电池电量

    Android 中通过广播获取电池电量信息. 电量信息只能通过动态注册广播才能获取到. 1.0 注册广播的两种方式...

  • iOS 如何获取设备相关信息

    1、获取iPhone名称: 2、获取app版本号: 3、// 获取电池电量: 4、// 获取当前系统名称: 5、/...

  • iOS 如何获取设备的各种信息

    一、目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前...

  • 最全的iOS 如何获取设备的各种信息

    一、目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前...

  • iOS获取设备各种信息

    一、目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前...

  • 获取手机的电池信息

    1、获取电池电量 2、获取电池状态 参考地址:http://www.cocoachina.com/ios/2016...

网友评论

      本文标题:Android获取电池电量和电池容量

      本文链接:https://www.haomeiwen.com/subject/depckctx.html