Я пытаюсь получить уровень тестового сигнала с помощью 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. Есть ли дополнительные настройки?
Вычисление уровня заряда батареи в%:
Вы можете найти текущую зарядку аккумулятора, извлекая текущий уровень заряда аккумулятора и масштаб из состояния батареи, как показано здесь:
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
Результат кода:
Нет Разрешение Требуется для получения статуса зарядки аккумулятора, просто используйте следующий код в вашем широковещательном приемнике: -
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
Это приведет к уровню заряда батареи :)