Cómo encontrar la pantalla está bloqueada en android

Para mi aplicación, necesito saber que la pantalla está bloqueada. Cómo comprobar esto en problemático. Utilicé la siguiente bandera:

if(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON != 0){ // some code }else if((WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)!= 0){ // some code } 

Pero esto siempre ejecutando tanto si ya parte … ¿qué bandera que tengo que usar para comprobar la pantalla está bloqueada o no?

Intentaré contestar esto aunque la pregunta es ya vieja puesto que está sin resolver y podría ayudar a otros google. 😉

Primero debe registrar un BroadcastReceiver para Intent.ACTION_SCREEN_OFF & Intent.ACTION_SCREEN_ON. Tenga en cuenta que este receptor debe estar registrado en códigos y no funcionará cuando se declare en el manifiesto.

En su receptor de difusión, cuando recibe Intent.ACTION_SCREEN_ON, puede comprobar si la pantalla está bloqueada utilizando los siguientes códigos:

 KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); boolean locked = km.inKeyguardRestrictedInputMode(); 
 KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); if( myKeyManager.inKeyguardRestrictedInputMode()) { //screen is locked } else { //screen is not locked } 

Registre un receptor de difusión con la acción android.intent.action.ACTION_SCREEN_OFF y escriba su código en el método onReceive () del receptor.

Si está utilizando una actividad, onPause () será llamada cuando la pantalla bloqueada y onResume () será llamada cuando la pantalla se desbloquee.

En su código que está comprobando algunas banderas, no sé dónde va a hacer esa comprobación? ¿Es una verificación continua? Si está utilizando una actividad en su aplicación, el procedimiento anterior ocurrirá, solo hágalo en el sitio web de desarrolladores de Android.

Supongo que ya puede haber encontrado la respuesta, pero si no (y para otros desarrolladores), puede hacerlo así:

  PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); boolean isScreenOn = powerManager.isScreenOn(); if (!isScreenOn) { //Screen is in OFF State //Code to power on and release lock KeyguardManager km = (KeyguardManager) this .getSystemService(Context.KEYGUARD_SERVICE); final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock"); kl.disableKeyguard(); PowerManager pm = (PowerManager) this .getSystemService(Context.POWER_SERVICE); WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyWakeLock"); wakeLock.acquire(); } 

Hay propósitos difundidos para el bloqueo y desbloqueo de la pantalla.

Compruébelo como:

 if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){//LOGIC Here} 

¡Házmelo saber!

Esto es lo que hice:

Esto se encarga si el usuario ha desbloqueado la pantalla, pero aún no ha entrado en la pantalla de inicio o la pantalla del usuario está desactivada decir durante una llamada.

  if (Intent.ACTION_SCREEN_ON.equals(pIntent.getAction()) || Intent.ACTION_USER_PRESENT.equals(pIntent.getAction())) { if(mListener!=null) { KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); boolean locked = km.inKeyguardRestrictedInputMode(); Log.v(TAG, ": Phone lock state from KEYGUARD_SERVICE: Current state:" + (locked ? "LOCKED":"UNLOCKED")); mIsPhoneLocked = locked; } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.