Get Battery Percentage in Android – Different Methods

By | September 25, 2017

We will see the different ways to get the battery percentage in Android.

Method 1

Register a Broadcast Receiver

   IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
   // Register the broadcast receiver
   registerReceiver(mBroadcastReceiver, iFilter);

Receive like this

private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // get the battery level
            int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            Log.i(TAG, "Battery : " + level + "%");
        }
    };

Method 2

BatteryManager bm = (BatteryManager)getSystemService(BATTERY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    int batLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
}

Method 3

 public static int getBatteryPercentage(Context context) {

        IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent batteryStatus = context.registerReceiver(null, iFilter);

        int level = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) : -1;
        int scale = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1) : -1;

        float batteryPct = level / (float) scale;

        return (int) (batteryPct * 100);
    }

Note : Make sure you unregister the receiver when you don’t need.

Leave a Reply

Your email address will not be published.