Android电池/使用情况统计信息

时间:2014-06-28 07:22:55

标签: android sdk battery usage-statistics

如何通常以每个应用为基础访问电池和使用信息? 在我的S5& S2信息显示在“设置/电池”菜单中,但我在Android SDK文档中找不到任何参考信息。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

没有正规的'访问每个应用程序的电池使用情况。我知道 一些黑客,但它们很混乱,可能不适用于> = Android 4.4。

但是,您可以使用提供每个应用数据的调试时间工具。 ATT ARO是迄今为止最好的。

在全球电池使用方面,情况会好转。

从代码中的任何一点,您都可以通过以下方式获得当前的电池电量:

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
if (level == -1 || scale == -1) {
   return 40f; // or any other default
}
float batteryLevelPercent = level / (float)scale;

如果您对持续监控电池状态感兴趣,可以注册更换电池'接收器:

void registerBatteryStateListener() {
    BroadcastReceiver batteryStateListener = new BroadcastReceiver() {
        int scale = -1;
        int level = -1;
        int voltage = -1;
        int temp = -1;
        @Override
        public void onReceive(Context context, Intent intent) {
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
            voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
            Log.e("BatteryStat", "level = " + level + ", scale = " + scale);
        }
    };
    IntentFilter changeFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryStateListener, changeFilter);
}

并为清单添加相关权限:

 <uses-permission android:name="android.permission.BATTERY_STATS"></uses-permission>

请注意,ACTION_BATTERY_CHANGED是一个粘性意图。这意味着它将基本上永远运行。