1.概要
Android中Settings->Battery->Battery usage中,可以查看电池电量使用情况。(充满电的状态下,各个应用消耗电量的实际情况)。
电池电量实际使用情况,其实是根据power_profile.xml中的配置有关,包括Screen亮灭屏、Wifi、Bluetooth等,通过计算app在一段时间内使用的相关资源的电量,估算出耗电量,并显示出来。
2.问题表现
进入Battery usage后,通过放电应用放电一定时间后,显示"没有电池使用数据"。
2.1.调查过程
通过Monitor获取当前布局,得到BatteryAppListPreferenceController.java(项目不同可能java类命名不同)。
在当前类中主要代码:
public boolean shouldShowBatteryAttributionList(Context context) {
......
PowerProfile powerProfile = new PowerProfile(context);
// Cheap hack to try to figure out if the power_profile.xml was populated.
final double averagePowerForOrdinal = powerProfile.getAveragePowerForOrdinal(
PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL, 0);
final boolean shouldShowBatteryAttributionList =
averagePowerForOrdinal >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP;
if (!shouldShowBatteryAttributionList) {
Log.w(TAG, "shouldShowBatteryAttributionList(): " + averagePowerForOrdinal);
}
return shouldShowBatteryAttributionList;
}
shouldShowBatteryAttributionList是判断电池使用数据是否显示的boolean值,实际上跟averagePowerForOrdinal >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP 有关。
MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP = 10;