Обнаруживать Изменение состояния батареи при каждом проценте в андроиде

Я хочу обнаружить изменение батареи в каждом проценте. Я могу определить уровень заряда батареи один раз с широковещательным приемником. Но он не обновляет значение автоматически при изменении% от 66 до 67.

Вот мой код.

private void batteryLevel() { BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { context.unregisterReceiver(this); Log.i("Battery CHANGED******",":: IN RECEIVER"); int rawlevel = intent.getIntExtra("level", -1); int scale = intent.getIntExtra("scale", -1); int level = -1; if (rawlevel >= 0 && scale > 0) { level = (rawlevel * 100) / scale; } btnConsumer.setText("Battery Level Remaining: " + level + "%"); } }; IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryLevelReceiver, batteryLevelFilter); } 

Добавлено разрешение

  <uses-permission android:name="android.permission.BATTERY_STATS"></uses-permission> 

Он обнаруживает 66, но когда он меняет 65 или 67, он не будет обновлять значение. Или не отображать журнал тоже

Я хочу сделать это, как будто я могу получить все изменения.

Заранее спасибо.

Во-первых, вам не нужны разрешения BATTERY_STATS .

Во-вторых, самая первая строка вашего onReceive() регистрацию вашего BroadcastReceiver , тем самым мешая вам получать какие-либо дополнительные обновления.

В-третьих, нет гарантии, что у вас будет информация о батареях, предоставленная вам для каждого изменения 1%. Многие телефоны Motorola, например, только посылают ACTION_BATTERY_CHANGED каждые 10%, пока батарея не ACTION_BATTERY_CHANGED . Решение о том, как часто транслировать ACTION_BATTERY_CHANGED , зависит от производителя устройства, а не от вас.