実行中のアプリケーションと各アプリケーションで使用されているバッテリーの量のリストを取得しようとしています。私は長い間グーグルを持っていますが、解決策を思いつきませんでした。ただし、PowerProfile、PowerUsageSummary内部クラスに関するいくつかの参照があります。
リフレクションテクニックで使用しましたが、探していたものが得られませんでした。PowerUsageSummaryは、[デバイスの設定]->[アプリケーション]->[バッテリーの使用]に移動して表示されるのと同じ詳細を表示します(これは、Samsundデバイスで表示される方法です)。
次に、PowerProfileクラスを使用しましたが、WIFI、AUDIO、VIDEO、GPS、BLUETOOTHなどで使用される電流のmAしか取得できませんでした(mA値はそれほど頻繁には変更されません。値が正しいかどうかはわかりません)。もう1つの参照は、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);