2010-11-23 15 views
9

Hier ist mein Szenario. Ich habe eine App, die Hintergrundsounds spielt. Mit dem BroadcastReceiver kann ich feststellen, wann sich das Display ausschaltet, und dann die Töne löschen. Ich kann auch sagen, ob der Bildschirm wieder eingeschaltet wird. Wenn das Gerät jedoch im Sperrzustand ist, möchte ich nicht, dass das Audio startet. Daher warte ich auf die ACTION_USER_PRESENT-Absicht, um zu signalisieren. Das alles funktioniert, außer wenn der Benutzer den Bildschirm nach dem Ausschalten schnell wieder einschaltet, erhalten Sie weder den Sperrbildschirm noch die Nachricht ACTION_USER_PRESENT. Also, gibt es eine Möglichkeit zu sagen, wenn der Bildschirm wieder an, wenn das Gerät gesperrt ist oder nicht, was ich denke auch schlafen bedeutet oder nicht?So erkennen Sie, ob das Gerät schläft

+0

Wenn das Gerät tatsächlich schläft, führt der Anwendungsprozessor keinen Code aus. Bildschirm gesperrt ist etwas ganz anderes. –

+1

Fair genug. Wie kann ich feststellen, ob der Bildschirm gesperrt ist? – iterator

+0

http://stackoverflow.com/questions/3170563/android-detect-phone-lock-event –

Antwort

9

Sie können versuchen, KeyguardManager zu überprüfen, ob das Gerät gesperrt ist. Hier ist ein Code (ich habe das selbst nicht versucht):

Viel Glück!

+1

Ich versuchte, aber "showing" gab false zurück, ob der Bildschirm gesperrt war oder nicht. – iterator

+0

Das hat sehr gut für mich funktioniert. Vielen Dank! – Chris

+0

danke es hat auch bei mir funktioniert –

12
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn() 
0
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn() 

sagt, wenn der Bildschirm eingeschaltet ist. Es wird also wahr, wenn der Bildschirm eingeschaltet ist, aber das Gerät gesperrt ist. Statt ,

inKeyguardRestrictedInputMode() 

wahr wird nur, wenn das Gerät gesperrt ist.

Verwandte Themen