0

I am trying to detect if device is currently charging or not but this code always sets isCharging variable to false:

public class PowerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent)
    {
        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;

        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

        if (isCharging)
        {
            Toast.makeText(context, "Charging", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Not charging", Toast.LENGTH_LONG).show();
        }

    }

}
Maxim Shoustin
  • 77,483
  • 27
  • 203
  • 225
Michal
  • 3,584
  • 9
  • 47
  • 74

1 Answers1

6

Basically You cannot register for ACTION_BATTERY_CHANGED via the manifest. Register it programmatically

See refer to these links will definitely help :)

Battery status is always not charging

https://github.com/commonsguy/cw-omnibus/tree/master/SystemEvents/OnBattery

http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

Community
  • 1
  • 1
Jayasagar
  • 2,046
  • 19
  • 22
  • One of your Activity or Service class onResume or onCreate method. Refer here https://github.com/commonsguy/cw-omnibus/blob/master/SystemEvents/OnBattery/src/com/commonsware/android/sysevents/battery/BatteryMonitor.java – Jayasagar Nov 05 '13 at 06:48