Ich habe eine App, die für etwa 4 Stunden verwendet wird, aber nur alle 5 Minuten, die ein Benutzer benötigt, um eine Eingabe zu machen oder den Bildschirm zu lesen. Das Telefon einzuschalten und den Bildschirm zu sperren ist ein bisschen nervig. Also habe ich zwei Möglichkeiten:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
, das den Bildschirm nicht blockiert, aber der Bildschirm immer hell ist, möchte ich es dimmen, während es keine Aktivität gibt. Nur wegen der Batterielebensdauer, oder spielt das nicht so viel für diese 4 Stunden?
eine Wecksperre SCREEN_DIM_WAKE_LOCK
was auch gut ist, was ich will, aber mir wurde gesagt, dass ich lieber Option 1 oben verwenden soll.
Kann ich das gewünschte irgendwie ohne Wake Lock erreichen?
Sie können verwenden:
%Vor%um den Bildschirm zu dimmen / zu dimmen, wenn Sie möchten.
lp.dimAmount=1.0f
dimmt den Bildschirm vollständig ab, aber Sie können ihn nach Belieben mit Werten von 0 (keine Dim) bis 1.0f einstellen.
Sie können einen Timer einstellen, der nach 5 Minuten Inaktivität den Anruf aufruft und dann den Bildschirm bei jedem Berührungsereignis oder Ähnlichem wieder einschaltet.
Selbst ein dunkler Bildschirm verbraucht über einen Zeitraum von 4 Stunden eine erhebliche Menge an Batterie. Sie wollen den Bildschirm wirklich nicht so halten. Ich denke, Sie wären besser dran mit FLAG_SHOW_WHEN_LOCKED, so dass der Bildschirm ausgeschaltet wird, aber der Benutzer sofort in Ihre App einsteigen kann, wenn er sie wieder anschaltet, ohne zuerst den Sperrbildschirm zu durchlaufen.
Wenn Sie den Bildschirm wirklich dunkel halten müssen, können Sie SCREEN_DIM_WAKE_LOCK verwenden. Wenn Sie mehr Kontrolle möchten, können Sie auch versuchen, die Bildschirmhelligkeit direkt mit WindowManager.LayoutParams.screenBrightness einzustellen.
Beantwortet das deine letzte Frage vom 26. Januar 11 um 15:28
?PowerManager pm = (PowerManager) getSystemService (Kontext.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, "Mein Tag"); wl.acquire (); ..screen bleibt während dieses Abschnitts eingeschaltet. wl.release ();
Siehe hier für mehr: Ссылка
Was ich damit meine, ist, dass Sie Power-Manager aktivieren sollten, bevor Sie Ihre neue Aktivität starten, um die Bildschirmsperre zu verhindern. Und loslassen, wenn Sie fertig sind.
Sie könnten ebenfalls lp.screenBrightness anstelle von lp.dimAmount
verwendenAchten Sie darauf, einen höheren Wert als 0 einzugeben, um die Bildschirmsperre zu vermeiden:
lp.screenBrightness = 0.01f + Wert / 100.0f;