2017-01-06 25 views
26

Zwykle, aby wyłączyć urządzenie z Androidem, można to zrobić za pomocą przycisku zasilania.Wyłączanie urządzeń z Androidem

Można również wykonać adb shell i reboot -p.

Ale w Android Things, Nie widzę sposobu na wyłączenie urządzenia. Jeśli nie ma problemu, chciałbym po prostu obniżyć moc mojego Raspberry Pi do tego, ale czy jest to dopuszczalne? Czy to może uszkodzić kartę SD?

+0

dobre pytanie. Nic w dokumentacji, "osadzony"/IoT OS powinien jednak z wdziękiem radzić sobie z nagłym brakiem mocy. –

+0

Spodziewam się, że Android Things zostanie zaprojektowany w taki sposób, że odłączenie zasilania jest w porządku.Zrobiłem to kilka razy z moim Dev Kit i nie wydaje mi się, żeby to był problem. – shalafi

+0

@shalafi Mam nadzieję, że tak. Zrobiłem to wiele razy z Linuksem na Pi podczas prac rozwojowych, ale zrobiłem kartę SD przeznaczoną tylko do odczytu do produkcji, gdzie klient chciał tej możliwości. – Boy

Odpowiedz

18

Android (i jego rozszerzenie, Android Things) nie powinien mieć problemu z nagłą utratą zasilania. Podstawowy system operacyjny jest przechowywany w partycjach tylko do odczytu w systemie plików, więc nie ma ryzyka uszkodzenia systemu operacyjnego z powodu nieudanego zapisu w locie.

Również, reboot -p powinien nadal działać, jeśli chcesz go użyć podczas testowania lub programowania. Idąc jeszcze dalej, możesz podłączyć Gpio z InputDriver, który emituje KEYCODE_POWER, aby dodać swój własny przycisk zasilania do systemu, jeśli uważasz, że go potrzebujesz.

+0

Dzięki, myślę, że pójdę w ten sposób. Muszę to zrobić zdalnie, prawdopodobnie używając websocket i shutdown na konkretnej komendzie. Myślę, że odłączenie zasilania powinno być również ok, ponieważ jest tylko do odczytu. Dopóki nie pozwolę, aby aplikacja zapisywała coś w plikach dir – Boy

+1

Po prostu doświadczam nagłej utraty mocy, a sdcard jest uszkodzony w wyniku. Podłącz go do ubuntu, nie może wykryć sdcard. Podłącz do mojego telefonu z Androidem, wykryj sdcard i pokaż, że sdcard ostrzegawczy musi zostać sformatowany. Formatuj z telefonu z Androidem, podłącz do ubuntu, nie wykryje ponownie. Podłącz do systemu Windows, wykryj, a następnie sformatuj go z systemu Windows. Na szczęście działa ponownie. Więc uważaj. – adadion

+0

@Devunwired W tej chwili KEYCODE_POWER nie jest szczególnie przydatny dla urządzeń bez wyświetlacza i ekranu dotykowego. Krótkie naciśnięcie klawisza KEYCODE_POWER powoduje wyłączenie ekranu podczas próby przejścia urządzenia w tryb uśpienia, a długie naciśnięcie powoduje wyświetlenie menu ekranowego z opcjami "Wyłącz" i "Uruchom ponownie", które należy kliknąć. –

15

Lubię Dave odpowiedział, tylko chcieliśmy dodać dwie rzeczy:

Można wyłączyć urządzenie Android Things programowo wiele sposobów, ale każdy ma zastrzeżenie do niej przywiązani, omawiane tutaj: Turn off device programmatically

aby wyłączyć urządzenie AndroidThings jakbyś powiedział, że można to zrobić poprzez ADB:

adb shell reboot -p 

(-p jest skrótem --poweroff)

+0

Potrzebuję go do zdalnego wyłączenia, urządzenie działa bez głowy. Nie chcę, aby klient musiał zrobić "adb shell reboot -p" :) Ale podany link daje mi różne opcje, dzięki! – Boy

+0

Możesz użyć Powiadomień w chmurze Firebase, aby powiadomić swoją aplikację, a następnie wykonaj jedną z opcji programowych. Tak, masz rację co do ADB u klientów :-) – Blundell

+0

To urządzenie nie będzie połączone z Internetem w moim przypadku użycia, ale jest to dobra opcja dla innych przypadków użycia, o których myślę ... – Boy

9

... i programowo

dla wyłączeniu

Runtime.getRuntime().exec("reboot -p"); 

i restartu

Runtime.getRuntime().exec("reboot"); 

Explanation: the reboot binarne jest dostarczany w Android Things obrazu z światowy plik wykonywalny Pozwolenie, tj. rwxr-xr-x, które umożliwia wykonywanie z poziomu aplikacji dowolnego procesu aplikacji. Innymi słowy, proces aplikacji nie musi zyskiwać su w przeciwieństwie do większości dostępnych telefonów/tabletów z Androidem, więc nie jest wymagane dodatkowe zezwolenie w AndroidManifest.xml.

0

Jeśli urządzenie jest podłączone poprzez adb, wpisz następujące polecenie

adb shell reboot -p 

-p jest skrótem dla --poweroff

Powiązane problemy