android获取电量的方法,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工程中存放的路径)

对应的power_profile.xml

3120  整个是电池容量

  CPU 小核的所有频点

300000

576000

748000

998400

1209600

1324800

1516800

1612800

1780000

  CPU小核对应每个频点满负荷的功耗

31.84

35.91

37.69

45.77

53.89

59.62

66.80

72.52

80.99

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

64.19

9.22

132.43

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值