2010-05-23 15 views
14

Me gustaría desbloquear la pantalla y encenderla para mostrar una ventana emergente en un activador de evento. Puedo desbloquear la pantalla usandoEncender la pantalla mediante programación

newKeyguardLock = km.newKeyguardLock(HANDSFREE); 
newKeyguardLock.disableKeyguard(); 

en KeyGuardService pero no puedo encender la pantalla. Estoy usando

wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE); 
wl.acquire(); 

pero sin éxito. La pantalla aún permanece apagada. ¿Cómo puedo lograr esto?

Respuesta

30

respuesta de Amir me hizo estrecha, pero se necesita la bandera ACQUIRE_CAUSES_WAKEUP al menos (Edificio contra Android 2.3.3). de indefinido

WakeLock screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
    PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
screenLock.acquire(); 

//later 
screenLock.release(); 
+0

¡Gracias! funciona para mí – ihrupin

+0

Funcionó bien para mí –

+0

Funciona muy bien para mí en Marshmallow. – March3April4

2

En OnCreate de su actividad principal() escribir código siguiente:

((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG").acquire(); 

hace que el dispositivo de despertar.

No se olvide disableKeyguard() para desbloquear el dispositivo ...

0

respuesta con cheque NullPointer y establecer el tiempo de espera:

private void turnOnScreen() { 
    PowerManager.WakeLock screenLock = null; 
    if ((getSystemService(POWER_SERVICE)) != null) { 
     screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
       PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
     screenLock.acquire(10*60*1000L /*10 minutes*/); 


     screenLock.release(); 
    } 
} 
Cuestiones relacionadas