2017-01-06 3 views
26

Обычно для отключения устройства Android вы делаете это с помощью кнопки питания, конечно.Выключение Android Things

Вы также можете сделать adb shell и reboot -p.

Но в Android Вещи, я не вижу способа выключить устройство. Если это не проблема, я бы хотел просто отключить мощность моего Raspberry Pi для этого, но это приемлемо? Может ли это испортить SD-карту?

+0

Хороший вопрос. Ничто в документации, «встроенная»/IoT ОС не должна обрабатывать внезапное отсутствие мощности изящно. –

+0

Я ожидаю, что Android Things будет спроектирован таким образом, чтобы отключить питание.Я сделал это несколько раз с моим Dev Kit и, похоже, не проблема – shalafi

+0

@shalafi Надеюсь. Я делал это много раз с Linux на Pi во время разработки, но я сделал только для чтения SD-карту для производства, где клиент хотел эту возможность. – Boy

ответ

18

Android (и, в дополнение, Android Things) не должен иметь проблем с внезапной потерей мощности. Основная операционная система размещается в разделах только для чтения в файловой системе, поэтому нет риска портить ОС из-за неудачной записи в полете.

Кроме того, reboot -p должен по-прежнему работать, если вы хотите использовать его при тестировании или разработке. Идя еще дальше, вы можете подключить Gpio с InputDriver, который испускает KEYCODE_POWER, чтобы добавить свою собственную кнопку питания обратно в систему, если вы считаете, что вам это нужно.

+0

Спасибо, я думаю, что поеду именно так. Мне нужно сделать это удаленно, возможно, используя websocket и завершение работы по определенной команде. Я думаю, что отключить питание также должно быть нормально, поскольку оно доступно только для чтения. Пока я не позволяю приложению писать что-то в его файлы. Dir – Boy

+1

Просто испытывает внезапную потерю мощности, а sdcard повреждается в результате. Подключите его к ubuntu, не можете обнаружить SD-карту. Подключайтесь к моему телефону Android, он обнаруживает SD-карту и показывает, что SD-карта должна быть отформатирована. Формат с телефона Android, подключаемый к ubuntu, не будет обнаружен снова. Подключитесь к Windows, он обнаружит, а затем отформатирует его из Windows. К счастью, снова работает. Так что будьте осторожны. – adadion

+0

@Devunwired В настоящий момент KEYCODE_POWER не особенно полезен для устройств без дисплея и сенсорного экрана. Короткое нажатие на KEYCODE_POWER отключает экран, когда он пытается перевести устройство в спящий режим, а длинное нажатие отображает экранное меню, в котором предлагаются опции «Отключить» и «Перезапустить», на которые нужно нажать. –

15

Мне нравится ответ Дейва, просто хотел бы добавить две вещи:

Вы можете выключить устройство Android Things Programatically ряд способов, но каждый имеет один нюанс, прикрепленный к нему, обсуждали здесь: Turn off device programmatically

Чтобы выключить устройство AndroidThings, как вы сказали, что вы можете сделать это с помощью АБР:

adb shell reboot -p 

(-p коротка для --poweroff)

+0

Мне нужно, чтобы оно было отключено удаленно, устройство работает без головного убора. Я не хочу, чтобы клиент должен был «перезагрузить компьютер-reboot -p» :) Но ссылка, которую вы предоставили, дает мне различные варианты, спасибо! – Boy

+0

Вы можете использовать облачную службу Firebase, чтобы уведомить об этом приложение, а затем выполнить одну из программных опций. Да, вы правы насчет ADB клиентов :-) – Blundell

+0

Это устройство не будет подключено к Интернету в моем случае использования, но это хороший вариант для некоторых других случаев использования, о которых я думаю ... – Boy

9

... и программно

для выключения

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

и перезагрузку

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

Explanation: reboot двоичных поставляются в Android Things изображения с мировой исполнитель e, т. е. rwxr-xr-x, что позволяет быть выполненным с любым процессом приложения. Другими словами, приложению не нужно получать su в отличие от большинства Android-телефонов/планшетов Android, поэтому дополнительное разрешение не требуется в AndroidManifest.xml.

0

Если устройство подключено через ADB, просто введите следующую команду

adb shell reboot -p 

-p является короткая форма для --poweroff

Смежные вопросы