Я пытаюсь получить список запущенных приложений и количество батареи, используемой каждым из них. Гуглил давно, но решения не нашел. Однако было несколько ссылок на внутренние классы PowerProfile, PowerUsageSummary.
Я использовал их с помощью техники Reflection, но не получил того, что искал. PowerUsageSummary показывает те же сведения, что и вы, перейдя в «Настройки устройства» -> «Приложения» -> «Использование батареи» (. Вот как это можно увидеть на устройстве Samsund ).
Затем я использовал класс PowerProfile, но я получил только ток в мА, используемый WIFI, AUDIO, VIDEO, GPS, BLUETOOTH и т. д. (Значения в мА не меняются так часто. Я не уверен, что значения верны ). Другой ссылкой был класс 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);