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.