Android - Schalten Sie Bildschirm, ohne dabei den StandBy-Modus
Ich weiß, diese Frage wurde gebeten, eine Menge Zeit aber es hat nie zufriedenstellend beantwortet.
Mein problem ist Folgendes:
Habe ich eine Tätigkeit, die verhindert, dass der Bildschirm ausschalten, für eine vordefinierte Zeit.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Wenn die vordefinierte Zeit ist vorbei, ich zeige einen dialog mit einem countdown um den Benutzer zu informieren, dass das display erlischt nach 10 Sekunden, wenn er nicht "Abbrechen" drücken.
Habe ich es geschafft das display auszuschalten, aber das Telefon schaltet immer in den StandBy-Modus.
Zum ausschalten verwendet habe ich:
Window mywindow = getWindow();
WindowManager.LayoutParams lp = mywindow.getAttributes();
lp.screenBrightness = 0.0f;
mywindow.setAttributes(lp);
Gibt es keine Möglichkeit, vollständig abdunkeln der display-ohne Umweg über den StandBy-Modus (die Pausen der Aktivität).
Mein Ziel ist, dass der Benutzer in der Lage sein sollten, Tippen Sie einfach auf das display zu erhellen den Bildschirm wieder. Also die Aktivität hat zu bleiben, in einen aktiven Zustand.
Eine ähnliche Frage gestellt wurde hier.
Da diese Frage schon fast ein Jahr alt, ich bin in der Hoffnung, dass vielleicht jemand es geschafft, dies in der Zwischenzeit.
Viele Grüße
Siggy
PowerManager
? Was könnte Ihnen helfen, Bildschirm einschalten und ausschalten. Aber ich fürchte, es könnte deaktivieren Sie Ihre Tätigkeit Empfang-touch-events zu.Abgesehen davon, dass es möglich ist oder nicht, ich bin mir nicht sicher, ob das eine gute Idee zu implementieren. Wenn der Bildschirm erlischt, die Benutzer erwarten, dass es auf stand-by. Das bedeutet, dass keine anderen Prozesse ausgeführt werden, die potenziell die drain-Akku Leben. Aber auch, dass das Gerät gesperrt ist und ein pin-code hat oder so ausgefüllt werden, um zu entsperren. Sie sollten sich nicht scheuen, "anhalten", eine Anwendung. Eigentlich ist es "gestoppt" angesichts der Android Activity Lifecycle. Angehalten wird, wenn ein dialog geöffnet wird, zum Beispiel, nicht, wenn geht das Gerät auf stand-by.
Ich bin derzeit rund um das Spiel mit
PowerManager
und WakeLocks
ein bisschen, aber ich Couln ' T erreichen die genaue Handhabung hätte ich gerne noch.Ich weiß, dass diese Art der Umsetzung ist nicht der richtige Umgang, aber es ist ein feature Wunsch des Kunden-ich arbeite für. Wenn es nicht möglich war, habe ich nach einer anderen Lösung suchen, Ihre Bedürfnisse zu erfüllen.
Möchten Sie vielleicht check out [Lösung][1] [1]: stackoverflow.com/a/16034100/1195076
InformationsquelleAutor Siggy | 2013-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, es ist nicht möglich, um den Bildschirm auszuschalten UND reaktivieren, nur durch berühren der Anzeige.
Mein neuer Ansatz ist nun:
Den PARTIAL_WAKE_LOCK hält die CPU läuft, aber ermöglicht die Anzeige abgeschaltet.
Beim power-oder home-Taste gedrückt wird, das display schaltet sich wieder ein, und die Aktivität wird wieder sichtbar (ohne "slide-to-unlock" oder sth. anderes).
Vergessen Sie nicht, lassen Sie die
screenWakeLock
.In meinem Fall habe ich es in der
onResume()
der Aktivität:Vielleicht hilft dies ja jemanden mit einem ähnlichen problem in die Zukunft.
In neueren Versionen der API, die Sie verwenden müssen, ist es eher so:
PowerManager pm = (PowerManager) getBaseContext().getSystemService(Context.POWER_SERVICE);
InformationsquelleAutor Siggy
Hinweis : ich war nicht in der Lage, mit WAKELOCK
Ich dachte einen workaround beinhaltet das ändern SCREEN_OFF_TIMEOUT. Verwenden Sie die unten
code, um es zu erreichen.
diese sets 10 Millisekunden als timeout für screen_timeout SYSTEM-WIDE .
Nun könnte man sich sorgen um systemweite änderungen gebracht. Zu umgehen, können Sie die Standard-screen_timeout_time und speichern Sie es auf eine variable legen Sie dann wieder das System SCREEN_OFF_TIMEOUT auf finish() der activity.
Sich vor der Einstellung von 10ms als unsere screen_timeout bekommen SCREEN_OFF_TIMEOUT,
Nun, wenn Sie fertig mit Ihren änderungen-oder wenn die Aktivität endet, können Sie die SCREEN_OFF_TIMEOUT zurück .
InformationsquelleAutor Deepak Negi