ユーザーが充電のためにデバイスを接続 (または取り外し) したことを検出しようとしています。プラグインされているかどうかを判断する受信機では、常に「誤った」ステータスの読み取り値が表示されます。これが私のコードです:
(マニフェスト内):
<receiver android:name=".PowerConnectionReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
PowerConnectionReceiver クラスは次のとおりです。
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
Log.d("Battery", "Plugged In: " + String.valueOf(isCharging));
Log.d("Battery", "status: " + String.valueOf(status));
}
}
何が機能しているか: 電話が接続されている場合、PowerConnectionReceiver が適切に呼び出されます。
ただし、ステータスを出力すると、常に -1 (入力したデフォルト値) が返されます。BatteryManager.EXTRA_STATUS が正しく入っていないようです。
参考までに、これらのログが出力しているものは次のとおりです。
"Plugged In: false"
"status: -1"
詳細な参照 - これは私がこれに使用している開発者サイトのページです: http://developer.android.com/training/monitoring-device-state/battery-monitoring.html