Ich möchte herausfinden, wie zu erkennen, wenn das Telefon aus dem schwarzen Bildschirmmodus aufwacht und einen Handler für dieses Ereignis schreiben. Ist das möglich? Es scheint, als wäre das etwas, was ein Broadcast Receiver handhaben sollte? Oder gibt es einen besseren oder geeigneteren Weg?Ist es möglich, einen Android-Broadcast-Empfänger zu schreiben, der erkennt, wenn das Telefon aufwacht?
Antwort
Wenn Sie einen Dienst haben, die es aktiv Sie diese Ereignisse mit
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// do something
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
fangen kann jedoch setzt dies einen ständig laufenden Dienst auf, die ich vor kurzem gelernt haben abgeraten, da es spröde ist (das OS mag an schließe sie) und benutzt ständig Ressourcen.
Enttäuschenderweise scheint es nicht möglich, einen Empfänger in Ihrem Manifest zu haben, der SCREEN_ON-Ereignisse abfängt.
Dies hat vor kurzem kommen:
android.intent.action.SCREEN_ON doesn't work as a receiver intent filter
auch
Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?
Sie sind direkt am Rundfunkempfänger. Sie können die Broadcast-Ereignisse SCREEN_ON und SCREEN_OFF abhören.
Sie könnten auch einen Broadcast-Empfänger haben, der die Broadcastabsicht USER_PRESENT abfängt, wenn der Benutzer das Gerät entsperrt hat. Natürlich respektieren einige Versionen von Honeycomb dies nicht, aber für alle nicht hirntoten Versionen von Android (2.x und 4.x) funktioniert es gut.
Dies funktioniert auch, wenn Sie sich bei AndroidManifest.xml registrieren. – bk138
ah danke, damit wird der Bildschirm erkennen und mir erlauben, richtig damit umzugehen, richtig? Ich habe Ihren Thread gelesen und empfehle Ihnen nicht, einen Hintergrunddienst laufen zu lassen und darauf zu warten, dass das Telefon aufwacht. Warum? Was ist der Nachteil und gibt es einen Weg herum? Führt Sie keine Hintergrunddienste wie Sie solche Ereignisse erkennen? – Joe
Dieser Artikel beschreibt das Hintergrund-Service-Problem - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ –
das Problem mit dieser Antwort, egal, warum es funktioniert, ist, weil Ihre Aktivität empfängt keine Absichten, wenn das Telefon schläft. Sie können screen_on in Ihrer Aktivität registrieren, aber Sie werden es nie bekommen. –