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.