Schalten Sie den Bildschirm aus, ohne dass Android schläft

Gibt es eine Möglichkeit, den Bildschirm schnell auszuschalten, ohne Android in den Ruhezustand zu versetzen?

Zum Beispiel benutze ich manchmal gerne die Calm-App, wenn ich schlafe. Aber der Bildschirm bleibt die ganze Zeit an. Wenn ich diese App nur 10 Minuten lang benutze, ist es großartig, dass der Bildschirm eingeschaltet bleibt. aber wenn ich stundenlang schlafe, möchte ich, dass die App weiterläuft (Sounds abspielt) und den Bildschirm ausschaltet.

Wie kann dies geschehen?

Dazu muss die App explizit einen sogenannten „Wakelock“ erstellen, der Android daran hindert, die CPU in den Deep Sleep zu versetzen und das gesamte System (einschließlich Ihrer App) am Laufen hält.
@GiantTree Richtig. Gibt es eine Möglichkeit, das schnell für alle Apps oder eine bestimmte App ein- und auszuschalten?
AFAIK muss eine App selbst nach einem solchen Wakelock fragen. Andernfalls kann Android eine App einfach beenden, wenn sie ohne Sperre im Hintergrund ausgeführt wird.
Ich habe die Frage wohl nicht verstanden. Können Sie den Netzschalter nicht drücken und den Bildschirm ausschalten lassen? Wenn ja, funktioniert Ihre App nicht mehr? Wenn dies zutrifft, kann diese Antwort von Nutzen sein: Gibt es eine Möglichkeit, eine App zu zwingen, im Hintergrund weiter ausgeführt zu werden, egal was passiert?
@Firelord Wenn Sie die Calm-App ausführen und den Netzschalter nicht drücken, wird der Bildschirm niemals ausgeschaltet. Nach stundenlangem Schlaf war ich froh, dass das Bildschirmbild nicht eingebrannt war.
Das Ändern /sys/class/leds/lcd-backlight/brightnessauf 0 erledigt den Job in meinem Gerät. Es versetzt das Gerät nicht in den Ruhezustand, sondern schaltet einfach die LEDs aus. Getestet auf dieser Calm-App. Sie können seine Musik hören, ohne den Akku auf dem Bildschirm zu verbrennen. Benötigt jedoch Root-Zugriff.
@Firelord Wenn der Bildschirm ausgeschaltet wird, wie ändern Sie den Wert zurück (da Sie nichts sehen können)?
Drücken Sie den Netzschalter zweimal mit einer Pause von einer Sekunde, der Bildschirm wird wieder normal. Ich habe es über ADB versucht, damit ich den Wert immer ändern konnte. Sie können dieses Verhalten mit Xposed Additions an eine Schaltfläche binden. Oder vielleicht könnte auch ein zeitbasiertes Ereignis in Tasker eine Option sein.
@Firelord Danke ... Ich werde es versuchen, um zu sehen, wie es funktioniert. Gibt es eine Möglichkeit, die Datei automatisch zu bearbeiten? Mit einem Root-Editor hineinzugehen und den Inhalt der Datei jedes Mal zu ändern, ist etwas mühsam.
Automatisierungs-Apps wie Tasker können das. Aufgabe wäre + -> Datei -> Datei schreiben -> Ihr Inhalt. Oder + -> Code -> Run Shell -> und schreiben Sie die Datei mit dem Befehl.

Antworten (2)

Der Dank geht an Firelord für die grundlegende Methode. Hier ist ein zeitverzögertes Shell-Skript, das die Hintergrundbeleuchtung für mein Gerät und anscheinend auch für andere ausschaltet.

Erstellen Sie eine Datei mit dem Namen „lcdoff“ und kopieren Sie Folgendes hinein:

#!/system/bin/sh
if [ -z "$1" ]; then
    echo "usage: `basename $0` delay"
    exit
fi
su -c 'echo getsu > /dev/null'
echo "Tap power button 2x quickly to restore"
sleep $1
su -c 'echo 0 > /sys/class/leds/lcd-backlight/brightness'

Versicher dich:

  • Das Gerät ist gerootet.
  • Die Skriptberechtigungen werden auf ausführbar gesetzt, zB durch chmod 755 lcdoff.
  • Das Skript befindet sich in /system/bin(Skripte können nicht von ausgeführt werden /storage).

Öffnen Sie dann eine Terminal lcdoff 10-App und geben Sie ein, um den Bildschirm nach einer Verzögerung von 10 Sekunden auszuschalten, lcdoff 30für eine Verzögerung von 30 Sekunden usw. Um sicherzustellen, dass der Prozessor eingeschaltet bleibt, aktivieren Sie einfach die Android-Entwickleroption „Stay Awake“ . Bearbeiten: Stay Awake funktioniert nur, wenn es an eine Stromquelle angeschlossen ist - siehe diese Antwort für eine Alternative.

Wenn Sie den Befehl nicht in ein Terminal eingeben möchten, können Sie das Skript als benutzerdefinierte Aktion starten in:

  • Vollkommener Kommandant
  • Tasker
  • Xposed Ergänzungen
  • Ihre App Ihrer Wahl
Um zu vermeiden, dass meine Antwort erneut gestoßen wird, füge ich hier das von mir verwendete Standby-Skript hinzu:if [ "$1" == "0" ]; then su -c 'echo sbylock >/sys/power/wake_unlock'; elif [ "$1" == "1" ]; then su -c 'echo sbylock >/sys/power/wake_lock'; lcdoff 0; else echo "usage: $(basename $0) 0|1"; fi

Ich hatte einige Probleme mit der akzeptierten Antwort, da ich mit Shell-Scripting auf Android/Unix/Linux nicht sehr vertraut bin, also dachte ich, ich würde meine Erfahrung hier für jeden in einem ähnlichen Boot hinzufügen.

Damit dies mit Tasker oder ähnlichem funktioniert, benötigen Sie folgende Zeile:

echo 0 > /sys/class/leds/lcd-backlight/brightness

Geben Sie dies für den Tasker in das Feld „Befehl“ ein, wenn „Use Root“ aktiviert ist, funktioniert es wie ein Zauber. Zum Deaktivieren einfach die Null gegen eine 1 tauschen, ergo:

echo 1 > /sys/class/leds/lcd-backlight/brightness

oder das Gerät sperren und entsperren.

Um Ihre Frage zum schnellen Umschalten dieses Verhaltens zu beantworten. Weisen Sie jeden der oben genannten Befehle einer Tasker-Aufgabe zu, dann können Sie den neuen Abfang durch langes Drücken in der neuesten Tasker-Version verwenden, um den Bildschirm ein- und auszuschalten, ohne das Gerät in den Ruhezustand zu versetzen. Alternativ können Sie den Befehl einem Profil zuweisen, das ausgelöst wird, wenn Ihre Bedingungen erfüllt sind.