2010-05-04 13 views
8

Meine App tut etwas, wenn der Bildschirm schwarz wird, aber ich möchte es nur ausführen, wenn der Bildschirm "von selbst" ausgeschaltet wurde, durch ein Bildschirm-Timeout - NICHT, wenn der Benutzer den Einschaltknopf drückt. Gibt es eine Möglichkeit, zwischen diesen beiden Ereignissen zu unterscheiden?Unterscheiden Sie zwischen Bildschirm-Timeout und Power-Button-Press?

ACTION_SCREEN_OFF Offensichtlich feuert in beiden Fällen, und ich habe keine anderen Absichten gefunden, die dem entsprechen könnten, wonach ich suche.

Danke für Ihre Hilfe, Nick

+0

Was ist das Sie Versuch es zu tun? Es kann eine andere Aktion geben, auf die Sie achten müssen. – CaseyB

+0

Ich versuche, eine einfache Berechnung durchzuführen, wenn der Bildschirm abgelaufen ist, aber nicht, wenn der Benutzer die Einschalttaste drückt, um den Bildschirm zwangsweise abzuschalten. Eine "Timeout" -Action wäre großartig, aber ich habe noch nichts Ähnliches gefunden. Ist es möglich, abzufragen, ob der Sperrbildschirm eingeschaltet ist (was, glaube ich, typischerweise nur passiert, wenn Sie den Netzschalter drücken, zumindest auf dem N1)? – Nick

+0

Warum möchten Sie das nur in dieser Situation tun? Wenn du * was * und * warum * erklärst, kann dir vielleicht jemand eine bessere Lösung vorschlagen. –

Antwort

4

Auf der unteren Ebene gibt es ein Ereignis passiert, wenn der Bildschirm abläuft, schauen Sie mit "adb logcat" und Sie werden es sehen, graben von dort.

+0

Danke für Ihre Antwort. Ich habe das gesehen, aber ich dachte, da es keine öffentliche Sendung ist, konnte ich nicht darauf hören, aber ich bin mir sicher, dass ich bei Google etwas darüber finden werde, wenn man sagt, dass es theoretisch möglich ist (wenn auch nicht mit üblichen Mitteln) , Ich vermute). Vielen Dank! – Nick

0

Können Sie für ein KEYCODE_POWER Tastaturereignis hören? Das könnte tun, was du willst. (Aber die Reihenfolge, in der diese und ACTION_SCREEN_OFF ankommen, ist möglicherweise nicht garantiert).

+0

Hallo, danke für die Antwort! Das ist eine gute Idee, obwohl ich es gerade ausprobiert habe und es nicht funktioniert, es scheint nicht möglich, diesen Schlüsselcode zu fangen: http://groups.google.com/group/android-developers/browse_thread/thread/8c858b7a8605791d/ 9120aa96dfb59d82? Lnk = raot Außerdem müsste ich dieses Key-Event systemweit registrieren, da ich einen Service nutze, der auch nicht möglich ist, denke ich: -/ Aber danke für deine Hilfe, es ist ein gute Idee, wenn es geklappt hätte, wäre es perfekt gewesen :-)! – Nick

1

Dienste können Schaltflächenereignisse nicht direkt verarbeiten. Vielleicht können Sie in Ihrer Aktivität einen Broadcast - Empfänger registrieren lassen, um benachrichtigt zu werden, wenn der Bildschirm ausgeschaltet wird, und dann die letzte Taste drücken, um zu sehen, ob es der Einschaltknopf ist - wenn nicht, dann können Sie einen senden senden Sie es an Ihren Dienst und lassen Sie es laufen, was Sie wollen.

1

Das ist eine lustige Frage ist :) Obwohl es nicht genau, können Sie versuchen, da der Benutzer die Zeit Abtasten letzten Berührungsereignis und zu der Zeit, Ihre Aktivität zu pausieren geht - und sehen, ob es passt die screen off timeout

Verwandte Themen