Tuesday 28 April 2020

Monitor the Battery Level and Charging State


Get Battery Percentage
 
private float getBattery_percentage() {
    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = getApplicationContext().registerReceiver(null, ifilter);
    int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
    float batteryPct = level / (float) scale;
    float p = batteryPct * 100;
    Log.d("Battery percentage", String.valueOf(Math.round(p)));
    return p;
}

Get Phone is charging /charged

private boolean getIsCharging() {
    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = this.registerReceiver(null, ifilter);
    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
    boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
            status == BatteryManager.BATTERY_STATUS_FULL;
    int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
    // How are we charging?    boolean  usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
    boolean   acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
    return isCharging;
}