ACTION_SCREEN_ON und ACTION_SCREEN_OFF funktioniert nicht?

7

Ich versuche, WiFi auszuschalten, wenn der Bildschirm ausgeschaltet (gesperrt) ist, und ihn wieder einzuschalten, wenn der Bildschirm eingeschaltet ist (entsperrt).

Ich habe eine BroadcastReceiver ; setze diesen Code ein:

%Vor%

und das ist die Klasse MyIntentReceiver :

%Vor%

Und das Ergebnis ist - sowohl ACTION_SCREEN_ON und ACTION_SCREEN_OFF hat noch nie gefeuert! USER_PRESENT und BOOT_COMPLETED funktionierten gut, der andere nicht. Ich benutze einen Emulator, kein echtes Gerät - kann dies das Problem verursachen?

Irgendwelche Hilfe? Ich muss den Bildschirm ein- und ausschalten, um WiFi zu aktivieren / deaktivieren um Batterie zu sparen.

Vielen Dank im Voraus

    
user935143 09.09.2011, 19:39
quelle

2 Antworten

8

Sie können diese Absichten nicht durch XML erfassen (ich vergesse, warum). Sie könnten jedoch ein Service verwenden, das ein Mitglied von BroadcastReceiver in seinem onStartCommand() registriert und es in seinem onDestroy() aufhebt. Dies würde erfordern, dass der Dienst im Hintergrund ausgeführt wird, ständig oder so lange wie Sie es benötigen, also sollten Sie alternative Routen erkunden.

Sie könnten BroadcastReceiver in Ihrer Service -Klasse wie folgt definieren:

%Vor%

Für ein etwas komplizierteres Beispiel, aber eines, das zeigt, wie die BroadcastReceiver und Service interagieren, siehe CheckForScreenBugAccelerometerService von meiner App ElectricSleep.

    
Jon Willis 09.09.2011, 19:49
quelle
12

Um die SCREEN_OFF- und SCREEN_ON-Aktionen (und möglicherweise andere) zu erfassen, müssen Sie den BroadcastReceiver nach Code und nicht über das Manifest konfigurieren.

%Vor%

Es ist getestet und funktioniert richtig.

    
PoOk 30.11.2011 18:05
quelle