2011-06-02 14 views
7

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

Respuesta

20

Aparentemente, el ACTION_BATTERY_CHANGED es una "transmisión fija", lo que significa que puede registrarse 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); 
} 
+0

¡Eso es PERFECTO! ¡Gracias! Lo único que pensé fue agregar 'unregisterReceiver (this);' al método 'onReceive()'. – CaseyB

+0

Me he dado cuenta de que EXTRA_PLUGGED contiene 0 cuando el dispositivo está conectado a la corriente pero la batería está completamente cargada. ¿Hay alguna manera de detectar que todavía esté conectado a la CA para poder ignorar EXTRA_PLUGGED? –

Cuestiones relacionadas