BatteryManager транслирует действие, когда устройство подключено или отключено от питания.Важно получать эти события, даже когда ваше приложение не запущено, особенно потому, что эти события должны влиять на то, как часто вы запускаете свое приложение, чтобы инициировать фоновое обновление, поэтому вы должны зарегистрировать BroadcastReceiver в своем манифесте, чтобы прослушивать оба событияопределение ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED в фильтре намерений.
<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>
В рамках соответствующей реализации BroadcastReceiver вы можете извлечь текущее состояние и метод зарядки, как описано в предыдущем шаге.
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;
int chargePlug = intent.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