Risposte:
Ciò richiede che tu dia alla tua app un'autorizzazione aggiuntiva ed è molto facile introdurre bug in cui rimani accidentalmente tenendo premuto il wakelock e quindi lasci lo schermo acceso.
È molto, molto meglio usare il flag della finestra FLAG_KEEP_SCREEN_ON, che puoi abilitare nella finestra della tua attività in onCreate()questo modo:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Ciò assicurerà che lo schermo rimanga acceso mentre la finestra è in primo piano e solo mentre è in primo piano. Semplifica notevolmente questo caso d'uso comune, eliminando qualsiasi giocoleria che devi fare mentre la tua app passa da uno stato all'altro.
Questa domanda ha già un'ottima risposta da @hackbod!
Sto rispondendo a questa domanda con due soluzioni aggiuntive!
Soluzione esistente:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Soluzioni aggiuntive:
possiamo usare keepScreenOn
1. implementation utilizzandosetKeepScreenOn() in java code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// or any View (in case generated programmatically )
View v = getLayoutInflater().inflate(R.layout.driver_home, null);
v.setKeepScreenOn(true);
setContentView(v);
}
Documenti http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Aggiunta keepScreenOnaxml layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >
Documenti http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Nota (alcuni punti utili):
1. Non importa che keepScreenOndovrebbe essere usato su di Main/Root/Parent View esso può essere usato con qualsiasi child viewfunzionerà come funzionaParent view
2. L'unica cosa importante è che View's Visibility must be visiblealtrimenti non funzionerà!
v.setKeepScreenOn(true);sembra essere l'unico modo per farlo per un frammento di dialogo a schermo intero
Un'altra soluzione è aggiungere android:keepScreenOn="true"( documentazione ) alle viste che devono mantenere lo schermo.
Consente un controllo un po 'più granulare in termini di quali visualizzazioni rimangono e quali no. Puoi persino fare riferimento a un'impostazione da un file di risorse in questo modo.