Avant de marquer ce message comme "duplicata", j'écris ce message car aucun autre message ne contient la solution au problème.
J'essaie d'éteindre l'appareil, puis après quelques minutes ou un changement de capteur, rallumez-le.
Désactiver les tests d'affichage
Je peux éteindre l'écran en utilisant:
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
Je n'ai pas pu éteindre l'écran en utilisant la méthode wl.release ().
Activer le test d'affichage
Ma première hypothèse, comme suit, ne fonctionne pas. Rien ne se passe, l'écran reste éteint.
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = -1f;
getWindow().setAttributes(params);
J'ai également essayé d'utiliser des wakelocks, sans succès.
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "tag");
wl.acquire();
Enfin, j'ai essayé ce qui suit, sans résultat.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Dans l'ensemble, je n'obtiens aucune sorte d'erreur dans la console pour aucune de ces méthodes. Mon texte de test «L'écran doit être allumé» s'affiche à l'écran lorsque j'allume l'appareil à l'aide du bouton d'alimentation. Cela montre que le code aurait dû s'exécuter. Veuillez ne répondre que si vous avez testé le code, il semble que de nombreuses fonctions telles que params.screenBrightness = -1
, ne fonctionnent pas comme elles le devraient selon le sdk.
Réponses:
Je vais supposer que vous voulez que cela ne soit en vigueur que lorsque votre application est au premier plan.
Ce code:
N'éteint pas l'écran au sens traditionnel du terme. Cela rend l'écran aussi sombre que possible. Dans la plate-forme standard, la luminosité peut être limitée; si votre appareil permet en fait à l'écran de s'éteindre complètement, c'est une particularité de la mise en œuvre de cet appareil et non un comportement sur lequel vous pouvez compter sur tous les appareils.
En fait, l'utiliser en conjonction avec FLAG_KEEP_SCREEN_ON signifie que vous ne permettrez jamais à l'écran de s'éteindre (et donc à l'appareil de passer en mode basse consommation), même si l'appareil particulier vous permet de régler la luminosité de l'écran à son maximum. Gardez cela à l'esprit. Vous utiliserez beaucoup plus d'énergie que si l'écran était vraiment éteint.
Maintenant, pour ramener l'écran à la luminosité normale, il suffit de régler la valeur de luminosité:
Je ne peux pas expliquer pourquoi cela ne remplacerait pas la valeur 0 que vous aviez précédemment définie. À titre de test, vous pouvez essayer d'y mettre une luminosité totale forcée pour forcer cette luminosité spécifique:
Cela fonctionne vraiment. Par exemple, les applications Livres de Google l'utilisent pour vous permettre de régler la luminosité de l'écran sur la luminosité lorsque vous utilisez un livre, puis de revenir à la luminosité normale lorsque vous la désactivez.
Pour aider au débogage, vous pouvez utiliser "adb shell dumpsys window" pour voir l'état actuel de votre fenêtre. Dans les données de votre fenêtre, il vous indiquera les LayoutParams actuels qui ont été définis pour elle. Assurez-vous que la valeur que vous pensez est bien là.
Et encore une fois, FLAG_KEEP_SCREEN_ON est un concept distinct; elle et la luminosité n'ont aucun impact direct l'une sur l'autre. (Et il n'y aurait aucune raison de redéfinir l'indicateur lors de l'annulation de la luminosité, si vous l'aviez déjà défini lors de la mise à 0. L'indicateur restera activé jusqu'à ce que vous le changiez.)
la source
J'avais écrit cette méthode pour allumer l'écran après le verrouillage de l'écran. Cela fonctionne parfaitement pour moi. Essayez-le
Et appelez cette méthode à partir de
onResume()
.la source
Je suggérerais celui-ci:
Le drapeau ACQUIRE_CAUSES_WAKEUP est expliqué comme ça:
Assurez-vous également que vous disposez de l'autorisation suivante dans le fichier AndroidManifewst.xml:
la source
Salut j'espère que cela aidera:
la source
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
ce qui n'éteint l'écran que lorsque le capteur de proximité est à l'état "proche".PROXIMITY_SCREEN_OFF_WAKE_LOCK
verrou d'attente, l'écran se rallume. Comment éviter cela?// Fichier manifeste de l'utilisateur
la source
Êtes-vous sûr d'avoir demandé l'autorisation appropriée dans votre fichier manifeste?
Vous pouvez utiliser la classe AlarmManager 1 pour déclencher une intention qui démarre votre activité et acquiert le verrou de réveil. Cela allumera l'écran et le gardera allumé. Le relâchement du wakelock permettra à l'appareil de s'endormir tout seul.
Vous pouvez également jeter un œil à l'utilisation du PowerManager pour mettre l'appareil en veille: http://developer.android.com/reference/android/os/PowerManager.html#goToSleep(long)
la source
La meilleure façon de le faire (en utilisant des appareils rootés):
Maintenant, nous avons ces deux fonctions:
Et ça:
Désolé pour mon mauvais anglais.
la source
Voici un exemple réussi d'une implémentation de la même chose, sur un appareil prenant en charge des valeurs de luminosité d'écran inférieures (j'ai testé sur une tablette Allwinner Chinese 7 "exécutant API15).
Si quelqu'un d'autre essaie cela, veuillez commenter ci-dessous si cela a fonctionné / n'a pas fonctionné et l'appareil, l'API Android.
la source
Pour garder l'écran allumé:
Retour au mode par défaut de l'écran: effacez simplement l'indicateur FLAG_KEEP_SCREEN_ON
la source
Ceci est travaillé sur Marshmallow
la source
En ce qui concerne la documentation Android, cela peut être réalisé en utilisant la ligne de code suivante:
J'ai ajouté ceci dans ma
onCreate
méthode et cela fonctionne très bien.Sur le lien, vous trouverez différentes façons d'y parvenir ainsi que des explications générales.
Lien vers la documentation: https://developer.android.com/training/scheduling/wakelock.html
la source
Si votre application est une application système, vous pouvez utiliser PowerManager.goToSleep () pour désactiver l'écran, vous avez besoin d'une autorisation spéciale
avant d'utiliser goToSleep (), vous devez utiliser la réflexion comme:
Maintenant, vous pouvez utiliser goToSleep () pour éteindre l'écran.
la source
Ajoutez simplement
ou appeler
sur la vue parent.
la source
Je n'aurais pas l'espoir de "réveiller l'écran" dans l'activité. Si l'écran est éteint, l'activité est probablement en pause et ne doit pas exécuter de code.
Au réveil, il y a le problème de l'écran de verrouillage. Je ne sais pas comment une application peut automatiquement contourner l'écran de verrouillage.
Vous devriez envisager d'exécuter vos tâches d'arrière-plan dans un service, puis d'utiliser le gestionnaire de notifications pour envoyer une notification lorsque tout ce qui est détecté. La notification doit fournir une sorte d'alerte de l'appareil (réveil de l'écran, icône de notification, voyant de notification, etc.). En cliquant sur la notification, il peut lancer l'intention de démarrer votre activité.
Vous pouvez également essayer de démarrer l'activité directement à partir du service, mais je ne sais vraiment pas si cela activera l'écran ou contournera l'écran de verrouillage.
la source
Conformément à l'API Android 28 et au-dessus, vous devez effectuer les opérations suivantes pour allumer l'écran
la source
J'ai essayé toutes les solutions ci-dessus mais aucune n'a fonctionné pour moi. J'ai donc cherché sur Google et trouvé des solutions ci-dessous. J'ai essayé et cela a fonctionné.
https://www.tutorialspoint.com/how-to-turn-android-device-screen-on-and-off-programmatically
s'il y a une suggestion, veuillez donner
la source