2010-05-23 19 views
14

Vorrei sbloccare lo schermo e attivarlo per mostrare un popup su un evento trigger. Sono in grado di sbloccare lo schermo utilizzandoAttivazione schermo a livello di programmazione

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

su KeyGuardService ma non riesco ad accendere lo schermo. Sto usando

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

ma senza successo. Lo schermo rimane spento. Come posso ottenere questo?

risposta

30

risposta di Amir mi ha stretto, ma è necessario il flag ACQUIRE_CAUSES_WAKEUP almeno (Edificio contro Android 2.3.3).

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

//later 
screenLock.release(); 
+0

Grazie! funziona per me – ihrupin

+0

Ha funzionato bene per me –

+0

Funziona alla grande su di me su Marshmallow. – March3April4

2

Nel OnCreate della vostra attività principale() scrivere codice seguente:

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

provoca il dispositivo di svegliarsi.

Non dimenticare disableKeyguard() per sbloccare il dispositivo ...

0

di indefinito risposta con controllo NullPointer e impostare timeout:

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(); 
    } 
} 
Problemi correlati