2010-07-03 21 views
21

Quiero ser capaz de detectar el evento de bloqueo del teléfono. Cuando mi aplicación se está ejecutando, si presiono el botón rojo (botón de finalización de llamada/botón de encendido), el teléfono se bloquea y la pantalla queda en blanco. Quiero ser capaz de detectar este evento, ¿es posible?Android detectar evento de bloqueo del teléfono

Respuesta

12

tener un receptor de difusión

android.intent.action.SCREEN_ON 

y

android.intent.action.SCREEN_OFF 

relacionadas: Leer respuesta de CommonsWareHere.

+15

Para el registro - bloqueo de encendido/apagado no es el mismo evento que la pantalla de encendido/apagado. – greenoldman

+2

La pantalla se apagará aunque se apague la pantalla al hacer una llamada telefónica –

+0

Aquí hay un ejemplo de esto que no capta la pantalla de bloqueo: en Android 5, si cambio de usuario, el sistema operativo va a la pantalla de bloqueo sin apagar la pantalla. – Sam

32

Alternativamente, usted puede hacer esto:

@Override 
protected void onPause() 
{ 
    super.onPause(); 

    // If the screen is off then the device has been locked 
    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    boolean isScreenOn; 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     isScreenOn = powerManager.isInteractive(); 
    } else { 
     isScreenOn = powerManager.isScreenOn(); 
    } 

    if (!isScreenOn) { 

     // The screen has been locked 
     // do stuff... 
    } 
} 
+0

¿Necesita agregar un permiso al manifiesto de la aplicación para este? – pqn

+1

Intenté esto, y no es necesario agregar el permiso – HVNSweeting

+1

Creo que esto solo comprueba si la pantalla está encendida o no, no verifica el bloqueo. Esto puede mezclarse con FLAG_KEEP_SCREEN_ON, por lo que la pantalla se desactiva solo cuando bloquea la pantalla. http://developer.android.com/reference/android/os/PowerManager.html#isScreenOn() ¿Qué ocurre con el control desbloqueado? (no screen-on) – HVNSweeting

Cuestiones relacionadas