2017-05-22 11 views
-2

私は、ユーザーが通常、毎日かなりの時間を費やし、バックグラウンドの仕事、通知、アラームなどを行うアプリケーションをいくつか持っています。 新しい機能が追加されました。バッテリーをプログラムで検出する

私のアプリのバッテリー使用量のデータをユーザーのデバイスで収集することはできますか?

私は、ADB経由でアンドロイド5.1からいくつかの機能が追加されたことを知っていますが、プログラムで行うことは可能ですか? 私のアプリのCPU時間、アクティブスクリーン、無線LANの使用など、間接的なやり方はありますか?

答えて

1

Deppとしてあなたが望むように、 実際にはどのアプリがデバイスのバッテリを放電させているのかわからないので、バッテリの充電状況に関する詳細しか知ることができません。

BatteryManagerは、すべてのバッテリーと充電の詳細を充電状態を含むスティッキインテントにブロードキャストします。

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
Intent batteryStatus = context.registerReceiver(null, ifilter); 

デバイスがUSBまたはAC充電器を経由して充電するのかどうか、充電されている場合は、現在の充電状態の両方を抽出し、することができます

// Are we charging/charged? 
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
        status == BatteryManager.BATTERY_STATUS_FULL; 

// How are we charging? 
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; 
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; 

ここにすべての詳細:https://developer.android.com/training/monitoring-device-state/battery-monitoring.html

+0

おかげで、私はより便利な 'BatteryManager'メソッド' BATTERY_PROPERTY_CAPACITY'と放送受信機を必要としない 'BATTERY_PROPERTY_CHARGE_COUNTER'を発見しました。しかし、私が本当に望んでいるのは、バッテリー使用量の設定値である「CPU合計」と「計算された電力使用量」 – anber

関連する問題