Détecter quand l'écran est verrouillé
Pardonnez-moi, cela a été la conduite de moi un fou, et je vais essayer de poster quelque chose de lisible par ma rage.
J'ai vu un couple de messages sur ici sur la façon de vérifier si l'écran est verrouillé, mais rien de tout cela a été de travailler pour moi. Tout détecte si l'écran est éteint ou pas (si il est verrouillé).
J'ai un jeu dans lequel la musique joue. Lorsque le bouton de verrouillage est enfoncé, il continue à jouer. J'ai d'abord eu la musique s'arrêter dans OnStop, mais la demande de redémarrer après avoir verrouillé, de sorte que la musique serait éventuellement commencer de nouveau.
Ensuite, j'ai ajouté KeyboardHidden|orientation pour le manifeste. De ce fait, il n'a donc pas le redémarrage de l'application, mais OnStop ne semble pas être appelé plus.
J'ai essayé d'utiliser PowerManager pour voir si l'écran est allumé/éteint, qui fonctionne, mais cela n'aide pas. (Je peux obtenir de la musique s'arrêter là, mais dès que vous touchez le bouton de verrouillage de nouveau, la musique démarre à droite de sauvegarder)
- Ce post récent sur les développeurs android blog semble être un peu liée à votre problème. Vous ne savez pas si il résout ce problème, je viens donc de le jeter dans ici au cas où vous l'auriez raté. Voir si elle contient toutes les informations utiles pour vous.
- Merci, c'est lié, cependant, j'ai du mal à comprendre comment le fait d'utiliser l'onfocuschanged méthode.
- Hey @Ryan. Comment à propos de nous le faire savoir via les commentaires ou accepter si l'une de ces solutions n'a fonctionné pour vous. Je suis curieux de connaître la réponse.
- double possible de Comment savoir si l'utilisateur est sur l'écran de verrouillage de service
- N'importe quelle application de lecture de la musique devrait examiner si c'est une bonne idée de continuer une fois que son
View
n'est pas au premier plan plus, regalrdless de si oui ou non l'appareil est verrouillé, l'utilisateur de choisir une autre application pour être affiché en premier plan, le système affiche un arrêt de l'avis, ou quoi que ce soit. Donc, les chances sont que vous êtes en train de demander à la mauvaise solution.
Vous devez vous connecter pour publier un commentaire.
Il ya une meilleure façon:
Pas besoin de broadcastRecievers, les autorisations ou quelque chose de similaire.
Remarque: Cela ne fonctionne pas lorsque l'utilisateur a défini son de verrouillage de l'écran à aucun
dans paramètres-->sécurité-->screenlock-->aucun
Context
....inKeyguardRestrictedInputMode()
méthode est dépréciée de l'API de niveau 28. UtilisationisKeyguardLocked()
au lieu de cela, qui est disponible à partir de l'API de Niveau 16.Ce lien peut être utile à d'autres personnes pour les deux choses à la place.
Vérifier si l'Appareil est Verrouillé Ou Non:
(Remarque: la méthode ci-dessus ne fonctionne pas si
screenlock
est fixé ànone
danssettings-->security-->screenlock
.)Vérifier Si l'Appareil est en veille ou en Mode Veille:(pour la Version du Sdk > L Aperçu < Version du Sdk)
isPhoneLocked = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && myKM.isKeyguardLocked) || (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && myKM.inKeyguardRestrictedInputMode())
inKeyguardRestrictedInputMode()
méthode est dépréciée de l'API de niveau 28. UtilisationisKeyguardLocked()
au lieu de cela, qui est disponible à partir de l'API de Niveau 16.La solution ci-Dessus est correcte mais quand je rentre la sortie il m'a donné une sortie verrouillée lorsque l'écran éteint et et verrouillé lorsque l'écran, mais n'a pas donné de déverrouiller la sortie lorsque j'ai ouvert l'appareil après la mise schéma pour déverrouiller.
Voici donc ma solution.
après que cela va me donner de sortie comme
if(strAction.equals(Intent.ACTION_USER_PRESENT) ...
, utilisezif(theFilter.matchAction(strAction)
Prises à partir de ce lien: https://gist.github.com/Jeevuz/4ec01688083670b1f3f92af64e44c112
Je dirais ceci:
La réponse ci-dessus à partir de @Shaul Rosenzweig, combinée avec les autres postes disponibles pour détecter et désactive l'écran de statut. J'ai testé cette solution sur le Samsung Galaxy S4 Mini et a bien fonctionné pour moi.
Luv Kumar réponse fonctionne, mais il n'enregistre que lorsque l'utilisateur a explicitement verrouille l'écran (en appuyant sur le bouton de verrouillage). En plus de cela, je veux que mon application à dire lorsque l'écran s'éteint (par exemple en veille de l'écran) n'a tout simplement que:
Juste ajouté une autre option pour myKM.inKeyguardRestrictedInputMode()