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:
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.
Cela empêche-t-il l'appareil de dormir? Si tel est le cas, la banalité de WAKE_LOCK me semble une erreur choquante!
Michael Cramer
32
Oui, cela maintient l'écran allumé et empêche l'appareil de dormir.
hackbod
1
Oui, vous pouvez supprimer l'indicateur, avec l'API de fenêtre appropriée. Vous n'avez pas à vous soucier de faire dessiner quoi que ce soit, le framework le fait si nécessaire.
hackbod
1
@hakbod: cela fonctionnerait pour garder l'écran vivant, mais qu'en est-il de l'écran qui est endormi, cela le réveillerait-il et le garderait-il vivant ????
Kavitha
5
@ KC202, vous pouvez utiliser WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON pour que l'écran s'allume lorsque votre fenêtre est affichée. Également souvent utilisé avec FLAG_DISMISS_KEYGUARD et / ou FLAG_SHOW_WHEN_LOCKED.
hackbod
34
Cette question a déjà une excellente réponse de @hackbod!
Je réponds à cette question avec deux solutions supplémentaires!
1.implementation utilisationsetKeepScreenOn() in java code
@Overrideprotectedvoid 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);}
1. peu importe qui keepScreenOndoit être utilisé dessus, Main/Root/Parent Viewil 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!
la note v.setKeepScreenOn(true);semble être le seul moyen de le faire pour un fragment de dialogue en plein écran
Tim
16
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.
Réponses:
VEUILLEZ NE PAS UTILISER DE SERRURE DE RÉVEIL
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 votreonCreate()
comme ceci: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.
la source
Cette question a déjà une excellente réponse de @hackbod!
Je réponds à cette question avec deux solutions supplémentaires!
Solution existante:
Solutions supplémentaires:
on peut utiliser
keepScreenOn
1.
implementation
utilisationsetKeepScreenOn() in java code
Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Ajout
keepScreenOn
àxml layout
Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Remarque (quelques points utiles):
1. peu importe qui
keepScreenOn
doit ê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 visible
sinon, cela ne fonctionnera pas!la source
v.setKeepScreenOn(true);
semble être le seul moyen de le faire pour un fragment de dialogue en plein écranUne 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.
la source