Я использую Battery Manger для получения уровня заряда батареи каждые 30 минут, но через некоторое время устройство оставалось бездействующим и в фоновом режиме в Android 8 оно будет отправлять тот же уровень заряда батареи 65% в течение более 6-7 часов, а затем отключить авто
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
return (int)(batteryPct*100);