Статистика BatteryManager не работает на Android

1

Я пытаюсь получить уровень тестового сигнала с помощью BroadCastReceiver:

int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);

Я добавил следующие разрешения для AndroidManifest.xml:

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

Когда я печатаю уровень и масштаб, я вижу значение по умолчанию 0. Есть ли дополнительные настройки?

  • 0
    Возможно, стоит прочитать эту запись в блоге, описывающую, как получить статистику батареи ....
Теги:
batterymanager

2 ответа

3
Лучший ответ

Вычисление уровня заряда батареи в%:

Вы можете найти текущую зарядку аккумулятора, извлекая текущий уровень заряда аккумулятора и масштаб из состояния батареи, как показано здесь:

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float batteryPct = level / (float)scale;

Внедрить BroadcastReceiver следующим образом:

 BroadcastReceiver mybatteryReceiver= new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                int rawlevel = intent.getIntExtra("level", -1);
                int scale = intent.getIntExtra("scale", -1);
                int level = -1;
                if (rawlevel >= 0 && scale > 0) {
                    level = (rawlevel * 100) / scale;
                }
                Log.d("TEMP","Battery Level in % is:: " + level + "%");
            }
        };

Получите код отсюда Он проверен и проверен. Работает отлично.

https://www.dropbox.com/s/1y6q5wu526ngz7t/BatteryStats.zip

Результат кода: Изображение 174551

  • 0
    У меня есть точная реализация, но уровень и масштаб всегда подходят со значением по умолчанию -1.
  • 1
    вы тестируете на реальном устройстве или эмуляторе?
Показать ещё 1 комментарий
0

Нет Разрешение Требуется для получения статуса зарядки аккумулятора, просто используйте следующий код в вашем широковещательном приемнике: -

int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);

Это приведет к уровню заряда батареи :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню