Réponses:
Cela nécessite que vous donniez à votre application une autorisation supplémentaire, et il est très facile d'introduire des bogues où vous restez accidentellement en maintenant le verrou de réveil et laissez ainsi l'écran allumé.
Il est de loin, beaucoup mieux d'utiliser l'indicateur de fenêtre FLAG_KEEP_SCREEN_ON, que vous pouvez activer sur la fenêtre de votre activité dans votre onCreate()comme ceci:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Cela garantira que l'écran reste allumé lorsque votre fenêtre est au premier plan, et uniquement lorsqu'elle est au premier plan. Cela simplifie considérablement ce cas d'utilisation courant, en éliminant toute jonglerie que vous devez faire lorsque votre application passe d'un état à l'autre.
Cette question a déjà une excellente réponse de @hackbod!
Je réponds à cette question avec deux solutions supplémentaires!
Solution existante:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Solutions supplémentaires:
on peut utiliser keepScreenOn
1. implementation utilisationsetKeepScreenOn() 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);
}
Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Ajout keepScreenOnàxml 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" >
Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Remarque (quelques points utiles):
1. peu importe qui keepScreenOndoit être utilisé dessus, Main/Root/Parent View il peut être utilisé avec n'importe quelchild view fonctionnera comme il fonctionne dansParent view
2. La seule chose qui compte, c'est que View's Visibility must be visiblesinon, cela ne fonctionnera pas!
v.setKeepScreenOn(true);semble être le seul moyen de le faire pour un fragment de dialogue en plein écran
Une autre solution consiste à ajouter android:keepScreenOn="true"(de la documentation ) aux vues qui doivent garder l'écran allumé.
Permet un contrôle un peu plus granulaire en ce qui concerne les vues qui restent et celles qui ne le sont pas. Vous pouvez même référencer un paramètre à partir d'un fichier de ressources de cette façon.