2010-04-04 4 views
5

Comme mentionné dans une question précédente, j'ai de la difficulté à intercepter tous les événements android.intent.action.SCREEN_ON sans une longue durée de vie Service (déconseillée).Comment détecter quand l'écran est allumé?

Je peux peut-être contourner le besoin si je peux simplement travailler quand l'écran est allumé à un moment donné, dans le Service. Est-ce que n'importe qui peut suggérer un appel de méthode qui retournerait cette information?

1,5 vers le haut.

Répondre

1

Le système ne permet pas délibérément aux applications de recevoir les diffusions ACTION_SCREEN_ON et ACTION_SCREEN_OFF dans leur manifeste, car nous ne souhaitons pas avoir à lancer une série d'applications pour allumer ou éteindre l'écran. C'est quelque chose qui arrive tout le temps, et doit être aussi rapide que possible. Malheureusement, comme indiqué, il n'y a pas moyen de vérifier immédiatement si l'écran est allumé.

+0

En fait, il permet de recevoir les émissions, comme BroadcastReceivers sur un service à long terme. Mon application le fait très heureusement, mais j'essaye de nixer le service de longue durée. Il échoue simplement silencieusement si vous le fournissez comme un filtre d'intention sur un récepteur. –

3

Si votre code est en cours d'exécution, il y a de fortes chances que l'écran soit allumé. La principale exception serait si votre code est réveillé via AlarmManager.

Ce serait bien si ACTION_SCREEN_ON était une émission persistante, mais cela ne semble pas être le cas. Si vous pouvez rouler avec Android 2.1 et plus récent, PowerManager a maintenant une méthode isScreenOn(). Les bonnes nouvelles sont, c'est disponible. La mauvaise nouvelle est que, puisqu'il a été ajouté là-bas, il est peu probable qu'il existe un autre moyen de le déterminer facilement. Et, une inspection rapide du code source ne donne pas beaucoup d'espoir que vous pourriez pirater votre chemin à l'information dans les SDK précédents.

5

PowerManager.isScreenOn() depuis: API Niveau 7

+0

Cela a fonctionné pour moi sur la note 8 mais pas sur l'onglet 4 ... –

Questions connexes