Detectando que el dispositivo está enchufado

Me gustaría poder detectar si el dispositivo está enchufado o no. Me gustaría poder consultarlo de la misma manera que lo hacemos con el estado de conectividad. ¿Es posible o necesito crear un receptor de difusión que escuche los eventos de la batería?

Aparentemente, ACTION_BATTERY_CHANGED es una “transmisión fija “, lo que significa que puedes registrarte y recibirla en cualquier momento después de que se haya emitido. Para obtener el estado conectado, puede hacer algo como:

public void onCreate() { BroadcastReceiver receiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); if (plugged == BatteryManager.BATTERY_PLUGGED_AC) { // on AC power } else if (plugged == BatteryManager.BATTERY_PLUGGED_USB) { // on USB power } else if (plugged == 0) { // on battery power } else { // intent didnt include extra info } } }; IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(receiver, filter); }