2012-07-05 12 views

risposta

19

si deve dichiarare questo usa-autorizzazione su AndroidManifest:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

E nel codice di attività:

PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock"); 
wakeLock.acquire(); 

Basta ricordarsi di rilasciare questo blocco quando l'applicazione è in pausa o distrutto da fare this:

wakeLock.release(); 

Di solito, si consiglia di chiamare il acquisire il metodo all'interno del onResume() della propria attività e il metodo release in onPause(). In questo modo garantiamo che la nostra applicazione funziona ancora bene in caso di sospensione o ripresa.

+3

FULL_WAKE_LOCK è stato deprecato dal API 17, FLAG_KEEP_SCREEN_ON ora è la strada da percorrere :) –

4
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
lock.disableKeyguard(); 

in AndroidManifest:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 

O

Segui this link

20

Un altro modo per mantenere la schermata di blocco su senza dover chiedere il permesso nel manifiest è:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

Stai facendo il tuo lungo processo di caricamento nel thread dell'interfaccia utente? Qualcosa non sembra giusto - se il processo è così lungo che il timeout dello schermo si interrompe e il processo termina, forse è necessario andare in un servizio in background.

+0

Come è possibile disattivare questo flag di nuovo se voglio? –

+1

Prova getWindow(). ClearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – barry

0

un'opzione interessante che non è stato ancora citato è il metodo

View#setKeepScreenOn(boolean onOff) 

. Questo può essere effettivamente utilizzato dinamicamente in qualsiasi momento durante il runtime dell'applicazione, ad es. per l'impostazione della modalità a schermo a seconda dello stato di app

-1

andare con il codice della chiave guardia la sua perfettamente funzionante,

Basta incollare il codice nel metodo onCreate nel file mainactivity E permesso nel file manifest Android

0

la riga seguente consente al telefono di essere attivata quando l'applicazione è in primo piano

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

le seguenti istruzioni permettono di disabilitare t si blocca lo schermo quando viene premuto il pulsante di blocco.Classe KeyguardLock è stata sconsigliata a livello di API 13

/*onCreate*/ 
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/ 
lock.disableKeyguard(); 

E nel tuo manifesto:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 
Problemi correlati