在Linux3.0+Android4.0以及4.2系统上面,启动Android后,在Settings里面的Battery选项上可以监测到电池充电放电及剩余电量等信息,但是界面上总是显示"无法获取电池使用数据"。
我看了一下Battery相关的信息,Android实际上都是从/sys/class/power_supply/battery/下读取到的,可以看到如下信息:
capacity
current_now
device
health
power
present
status
subsystem
technology
temp
type
uevent
voltage_now
在Android上层的Java中PowerUsageSummary.java中判断并打印了"无法获取电池使用数据",如下:
if (mPowerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL)
addNotAvailableMessage();
return;
}
跟踪代码到PowerProfile.java中,找到了关于PowerProfile的定义如下:
public static final String POWER_SCREEN_FULL = "screen.full";
在frameworks/base/core/res/res/xml/power_profile.xml
中有0.1
所以,在mPowerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL)返回的应该是0.1,<10直接返回了,就显示了“无法获取电池使用数据”的情况了。
解决办法:
我可以直接注释掉:
/*if (mPowerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL)
addNotAvailableMessage();
return;
}*/
编译运行后就可以看到电池的使用信息了。
或者
更改frameworks/base/core/res/res/xml/power_profile.xml中的screen.full值,具体值就看各个平台的screen使用情况。