Meine Anwendung sollte erkennen, ob der Benutzer zu schlafen war, um sich mit einer Willkommensnachricht zu starten, wenn der Benutzer aufwacht und sein Telefon zum ersten Mal morgens, nachmittags oder wann immer er aufwacht, durch Drücken des Power Puttons und Geben Sie das Muster auf dem Homescreen oder Pin oder was auch immer.Wie kann die Zeit bestimmt werden, für die das Gerät nicht verwendet wurde?
Ich möchte dies durch Messen der Zeit, die das Gerät das letzte Mal verwendet wurde. Ich gehe von 8 Stunden Schlaf aus, also wenn 8 Stunden seit dem letzten Ausschalten vergangen sind, startet beim nächsten Einschalten des Mobiltelefons die Anwendung (bzw. eine Funktion im Inneren).
Der Bildschirm, der wegen eines Alarms oder irgendetwas anderes als Benutzerinteraktion läuft, sollte nicht zählen.
Ich schaute auf Logcat und es gab mir die nützliche Information I/PowerManagerService: Going to sleep due to power button
. Ein PowerManagerServiceListener könnte also ein Weg sein. Ich habe https://developer.android.com/reference/android/os/PowerManager.html gefunden, aber es dient dazu, das Display aktiv zu halten, nicht um es passiv zu melden. Ein anderer Kandidat ist KeyguardViewMediator: onStartedGoingToSleep(2)
und KeyguardServiceDelegate: onScreenTurnedOff()
.
Sicher, ich könnte eine Abfrage-Anwendung erstellen, die durch Logcat aussieht, aber das klingt wie eine stark batterieverbrauchende Ansatz.
Welche Leistung freundliche Art ist da, um zu erreichen, was ich will?
Es geht um die Mittel zu einem Ende. Wie misst man die Zeit zwischen den Interaktionen mit dem Gerät, wie beim Tippen auf den Bildschirm, Drücken der Power-Taste ... –