What is the best way to get battery level on Android without permanently monitoring it?

Sanziana picture Sanziana · Jun 28, 2013 · Viewed 15.7k times · Source

I just need the battery level percentage at one point to print it on the screen, but I don't want to keep monitoring it afterwards.

All code on the internet seems to listen for future changes, but I just need it once. What can be done to get it in a simple way?

Answer

woot picture woot · Jun 28, 2013

As stated in Get battery level only once using Android SDK You can use the following code:

public float getBatteryLevel() {
    Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

    // Error checking that probably isn't needed but I added just in case.
    if(level == -1 || scale == -1) {
        return 50.0f;
    }

    return ((float)level / (float)scale) * 100.0f; 
}