我正在尝试获取正在运行的应用程序的列表以及每个应用程序使用的电池量。我google了很长时间,但没有提出解决方案。但是,PowerProfile、PowerUsageSummary 内部类有一些参考资料。
我通过反射技术使用它们,但没有得到我想要的东西。PowerUsageSummary 显示的详细信息与您通过转到设备设置->应用程序->电池使用(这是在 Samsund 设备中可以看到的方式)看到的相同。
然后我使用了 PowerProfile 类,但我只得到了 WIFI、AUDIO、VIDEO、GPS、BLUETOOTH 等使用的电流 mA(mA 值不会经常变化。我不确定这些值是否正确)。另一个参考是 BatteryStatsImpl 类。我测试了这个类,但值始终为 0。我仍在寻找正在运行的应用程序列表以及每个应用程序使用的电池量。任何帮助表示赞赏。
谢谢,
这是我为 BatteryStatsImpl 类尝试的示例代码。
String BATTERY_PROFILE_CLASS = "com.android.internal.os.BatteryStatsImpl";
Object mBatteryProfile = Class.forName(BATTERY_PROFILE_CLASS).getConstructor().newInstance();
Method batteryMeth = Class.forName(BATTERY_PROFILE_CLASS).getMethod("getBatteryUptime", long.class);
Object arglist1[] = new Object[1];
arglist1[0] = System.currentTimeMillis();
// This is to calculate the batteryUpTime since the current time.
Long batteryUptime = (Long) batteryMeth.invoke(mBatteryProfile, arglist1);
Method dischargeMeth = Class.forName(BATTERY_PROFILE_CLASS).getMethod("getDischargeStartLevel");
// This is to calculate the dischargeTime of the device battery
Integer dischargeTime = (Integer) dischargeMeth.invoke(mBatteryProfile);