Mam urządzenie TV nVidia Shield z systemem Android TV.
Aby zintegrować to z moją konfiguracją kina domowego, muszę mieć możliwość ustalenia, czy urządzenie jest aktywne, czy śpi.
W przypadku innych urządzeń po prostu używam polecenia ping, aby to ustalić. Ponieważ jednak urządzenia z Androidem są w zasadzie zawsze włączone, w tym przypadku to nie działa.
Jednym ze sposobów byłoby oczywiście napisanie prostej aplikacji, która otwiera port TCP, gdy urządzenie jest aktywne i zamyka go, gdy śpi.
Moje pytanie brzmi, czy istnieje prostszy sposób, może istniejąca aplikacja lub inny sposób na zrobienie tego bez rozwijania własnej aplikacji.
standby
android-tv
Mika Fischer
źródło
źródło
:)
Odpowiedzi:
Wygląda na to, że nVidia Shield Android TV jest wyposażony w system Android 5.1.1, a aktualizacja Marshmallow jest dostępna tylko od grudnia. Zakładam, że Android 5.1.1 jest wersją zainstalowaną na twoim urządzeniu.
Zapytanie o usługi systemowe
Włączyć adbw trybie bezprzewodowym na urządzeniu. W razie potrzeby postępuj zgodnie z oficjalnym przewodnikiem lub odpowiedzią Izzy, aby uzyskać instrukcje.
Możesz znaleźć status Androida - uśpienie lub przebudzenie - ze zrzutu różnych usług systemowych.
Usługa: moc
Wyszukaj ciągi
mWakefulness
i / lubDisplay Power: state
. Oba dałyby ci potrzebny status.Przykład:
daje mi
Usługa: okno
Wyszukaj ciągi
mAwake=true
i / lubmScreenOnEarly=true
i / lubmScreenOnFully=true
Przykład:
daje mi
Service: Display
Wyszukaj ciągi
mState=OFF
i / lubmScreenState=OFF
.Przykład:
daje mi
Użyj automatyzacji
Jeśli żadna z usług systemowych wymienionych w poprzedniej metodzie nie działała dla Ciebie, skonfiguruj automatyzacja aplikacja, taka jak Tasker lub MacroDroid lub Automate.
Korzystamy teraz z automatyzacji, aby zapisać status Androida w pliku, na przykład Sleeping for sleep mode i Przebudźcie się, gdy jest przebudzony.
Tasker ,
MacroDroid
Android niestety nie jest dostarczany z
echo
aniprintf
narzędziem. Jeśli urządzenie jest zrootowane, możesz zainstalować busybox i zachować spokój. Jeśli nie, pobierz plik binarny busybox , ustaw uprawnienia do plików wykonywalnych i pchnij go do/data/local/tmp
użyciaadb push
. Innym sposobem dla niezrootowanego urządzenia jest trzymanie trzech plików, jednego dla stanu, jednego z tekstem Sleeping i ostatniego z tekstem Awake. Ilekroć ekran się wyłącza / włącza, skopiuj drugi / trzeci plik do pierwszego.MacriDroid wymaga również wtyczki, takiej jak Bezpieczne ustawienia do wykonywania poleceń.
Akcja: Zabezpieczone ustawienia → Akcje → Uruchom polecenie:
echo Sleeping > FILE_PATH
Akcja: Zabezpieczone ustawienia → Akcje → Uruchom polecenie:
echo Awake > FILE_PATH
W przypadku niezrootowanego Androida
echo
należy go zastąpić./data/local/tmp/busybox echo
. W przeciwnym razie wykonaj operację kopiowania za pomocą poleceniacp SOURCE DESTINATION
.Automatyzacja
Twój przepływ powinien mniej więcej przypominać ten obraz
(Kliknij obraz, aby powiększyć)
Musisz stworzyć dwa przepływy, jeden dla snu, a drugi dla przebudzenia. Drugi blok w przepływie nosi nazwę Odbiór emisji i można go znaleźć w obszarze Aplikacje. Trzeci blok nosi nazwę Tekst zapisu pliku i można go znaleźć w Plik i przechowywanie.
Możesz teraz sprawdzić zawartość tego pliku za pomocą adb w trybie bezprzewodowym lub SSH (wymaga serwera SSH w Androidzie; uruchom serwer na wszystkich interfejsach i nie łącz go z jednym interfejsem).
Istnieje jeszcze inna możliwość, na przykład przesłanie pliku z aplikacji automatyzacji na lokalny lub zdalny serwer, dzięki czemu można zapytać ten serwer zamiast Androida o status.
źródło
To nie jest właściwie rozwiązanie, ale w ustawieniach urządzenia prawdopodobnie jest opcja, która wyłącza Wi-Fi, gdy urządzenie przechodzi w tryb bezczynności. Nawet jeśli nie ma takiej opcji, jestem pewien, że musi być na to aplikacja. Jeśli więc Wi-Fi jest wyłączone w stanie bezczynności, podejście „ping” będzie działać, ale musisz poradzić sobie z niedziałającymi aktualizacjami w tle i tak dalej, gdy urządzenie przejdzie w stan bezczynności.
Nie sądzę, że jest to domyślna aplikacja dla tego rozwiązania, ale być może dalszy punkt pomoże. Możesz utworzyć własną aplikację dla systemu Android, która nasłuchuje programu PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED,
Intent
a po otrzymaniu żądania z serwera może odesłać, jeśli urządzenie nie działa. Zauważ jednak, że kiedy urządzenie otrzyma żądanie serwera, prawdopodobnie się obudzi.źródło
Możesz skonfigurować skrypt powłoki, aby wiedzieć, czy urządzenie jest w trybie bezczynności .. jeśli urządzenie jest w stanie bezczynności .. następnie możesz
wysłać sygnał do urządzenia .. Na przykład możesz użyć polecenia powłoki adb, jak poniżej: adb shell dumpsys deviceidle
źródło
dumpsys deviceidle
tak naprawdę nie działa na moim telefonie przynajmniej (dajeCan't find service: deviceidle
).