Ich habe ein nVidia Shield TV-Gerät, auf dem Android TV ausgeführt wird.
Um dies in mein Heimkino-Setup zu integrieren, muss ich feststellen können, ob das Gerät aktiv ist oder schläft.
Für meine anderen Geräte verwende ich nur Ping, um dies zu bestimmen. Da Android-Geräte grundsätzlich immer eingeschaltet sind, funktioniert dies in diesem Fall nicht.
Eine Möglichkeit wäre natürlich, eine einfache App zu schreiben, die einen TCP-Port öffnet, wenn das Gerät aktiv ist, und ihn schließt, wenn es sich im Ruhezustand befindet.
Meine Frage ist, ob es einen einfacheren Weg gibt, vielleicht eine vorhandene App oder einen anderen Weg, dies zu tun, ohne meine eigene App dafür zu entwickeln.
standby
android-tv
Mika Fischer
quelle
quelle
:)
Antworten:
Es scheint, dass nVidia Shield Android TV mit Android 5.1.1 geliefert wird und ein Marshmallow-Update erst seit Dezember verfügbar ist. Ich gehe davon aus, dass Android 5.1.1 die auf Ihrem Gerät installierte Version ist.
Systemdienste abfragen
Aktivieren Sie adb im Wireless-Modus auf dem Gerät. Folgen Sie bei Bedarf dem offiziellen Leitfaden oder dieser Antwort von Izzy, um Anweisungen zu erhalten.
Sie können den Status von Android - Schlaf oder Wach - aus dem Speicherauszug verschiedener Systemdienste ermitteln.
Service: Leistung
Suchen Sie die Zeichenfolgen
mWakefulness
und / oderDisplay Power: state
. Beide würden Ihnen den Status geben, den Sie benötigen.Beispiel:
gibt mir
Service: Fenster
Suchen Sie die Zeichenfolgen
mAwake=true
und / odermScreenOnEarly=true
und / odermScreenOnFully=true
Beispiel:
gibt mir
Service: Anzeige
Suchen Sie die Zeichenfolgen
mState=OFF
und / odermScreenState=OFF
.Beispiel:
gibt mir
Verwenden Sie die Automatisierung
Wenn keiner der in der vorherigen Methode genannten Systemdienste für Sie funktioniert hat, richten Sie eine Automatisierungs- App ein, z. B. Tasker, MacroDroid oder Automate.
Wir würden jetzt die Automatisierung verwenden, um den Status von Android in eine Datei zu schreiben, z. B. Sleeping for Sleep-Modus und Awake, wenn es wach ist.
Tasker ,
MacroDroid
Android kommt leider nicht mit
echo
oderprintf
Dienstprogramm. Wenn das Gerät gerootet ist, können Sie Busybox installieren und in Ruhe sein. Wenn nicht, laden Sie die Busybox- Binärdatei herunter , legen Sie die ausführbaren Berechtigungen fest und verwenden Sie/data/local/tmp
sieadb push
. Eine andere Möglichkeit für ein nicht gerootetes Gerät besteht darin, drei Dateien zu speichern, eine für den Status, eine mit dem Text Sleeping und die letzte mit dem Text Awake. Wenn der Bildschirm ein- oder ausgeschaltet wird, kopieren Sie die zweite / dritte Datei in die erste.Für MacriDroid ist außerdem ein Plugin erforderlich, z. B. Sichere Einstellungen , um Befehle auszuführen.
Aktion: Sichere Einstellungen → Aktionen → Befehl ausführen:
echo Sleeping > FILE_PATH
Aktion: Sichere Einstellungen → Aktionen → Befehl ausführen:
echo Awake > FILE_PATH
Für ein nicht gerootetes Android
echo
sollte durch ersetzt werden./data/local/tmp/busybox echo
. Führen Sie andernfalls einen Kopiervorgang mit dem Befehl auscp SOURCE DESTINATION
.Automatisieren
Ihr Flow sollte mehr oder weniger wie dieses Bild aussehen
(Klicken Sie auf das Bild, um es zu vergrößern)
Sie müssen zwei Flüsse erstellen, einen für den Schlaf und einen für den Wachzustand. Der zweite Block im Flow heißt Broadcast Receive und befindet sich unter Apps. Der dritte Block heißt File Write Text und befindet sich unter File & Storage.
Sie können den Inhalt dieser Datei jetzt mit adb im Wireless-Modus oder mit SSH überprüfen (erfordert einen SSH-Server unter Android; führen Sie den Server auf allen Schnittstellen aus und binden Sie ihn nicht an eine einzige Schnittstelle.)
Es gibt eine andere Möglichkeit, z. B. Ihre Automatisierungs-App dazu zu bringen, die Datei auf einen lokalen oder Remote-Server hochzuladen, damit Sie diesen Server anstelle von Android abfragen können, um den Status zu ermitteln.
quelle
Dies ist eigentlich keine Lösung, aber in den Geräteeinstellungen gibt es wahrscheinlich eine Option, die Wi-Fi deaktiviert, wenn das Gerät in den Leerlaufmodus wechselt. Auch wenn es keine solche Option gibt, muss es sicher eine Anwendung dafür geben. Wenn Wi-Fi im IDLE-Status deaktiviert ist, funktioniert der "Ping" -Ansatz, Sie müssen sich jedoch mit nicht funktionierenden Hintergrundaktualisierungen usw. befassen, wenn das Gerät in den IDLE-Status wechselt.
Ich glaube nicht, dass es eine Standardanwendung für diese Lösung gibt, aber vielleicht hilft Ihnen ein weiterer Punkt. Sie können Ihre eigene Android-Anwendung erstellen, die PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED abhört. Wenn Sie
Intent
eine Anfrage von Ihrem Server erhalten, können Sie diese zurücksenden , wenn das Gerät wach ist oder nicht. Beachten Sie jedoch, dass Ihr Gerät, wenn es eine Serveranforderung empfängt, wahrscheinlich wach wird.quelle
Sie können ein Shell-Skript einrichten, um festzustellen, ob sich das Gerät im Leerlaufmodus befindet. Wenn sich das Gerät im Leerlauf befindet. Dann können
Sie ein Signal an das Gerät senden. Beispielsweise können Sie den folgenden Befehl adb shell verwenden: adb shell dumpsys deviceidle
quelle
dumpsys deviceidle
zumindest auf meinem Handy nicht wirklich (gibtCan't find service: deviceidle
).