(Примечание: эти сообщения перенесены из моего предыдущего (Примечание: эти сообщения перенесены из моего предыдущего блог)
Android Things переносит Android и экосистему мобильной разработки на устройства интернета вещей. В настоящее время он находится в предварительном просмотре для разработчиков 4 и поддерживает различные платформы, такие как Raspberry Pi, Intel Edison/Joule и NXP pico. Вы можете узнать больше на официальном сайте , но, по сути, разработчик теперь может использовать те же инструменты Android и API на устройствах Интернета вещей, включая доступ к сервисам Google, таким как Google Диск/Поиск/Карты/Fit/Firebase/и т. Д.
Имея нулевой опыт разработки Android, это привлекло мой интерес, и я решил, что попробую посмотреть, что нужно, чтобы добраться до “Привет, мир” аппаратного обеспечения: мигающий светодиод.
Оборудование
Android Things в настоящее время поддерживает вышеупомянутые платформы. Естественно, я пошел с Intel Edison, который у меня валяется (у многих из вас тоже может быть такой, если вы посещали один из многих хакатонов в прошлом году:) Если у вас есть другая поддерживаемая платформа, вы можете пропустить раздел настройки ниже и следовать https://developer.android.com/things/hardware/developer-kits.html вместо этого.
Настройка программного обеспечения
Нам нужно будет загрузить/установить пару вещей, чтобы начать работу:
Облегченный инструмент Intel Flash Tool/| ( Для обновления прошивки на Intel Edison) Системный образ Android-вещей
(Системный образ Android-устройств для вашей платы) Студия Android
Первое, что вам нужно сделать, это установить Android Studio и обновить ее до последней версии SDK/инструментов. Вам понадобится использовать эти инструменты позже для обновления платы и развертывания приложения. После установки убедитесь, что у вас есть **adb** и **быстрая загрузка** в командной строке.
Как только это будет готово, загрузите Intel Flash Tool Lite вместе с системным образом Android Things. Вы можете следовать этому руководству здесь для получения подробной информации о том, как обновить прошивку и установить Android-устройства. В flashall.sh сценарий, упомянутый в руководстве, не сработал для меня, поэтому вот краткое описание шагов, которые я предпринял, чтобы запустить и запустить доску:
Запустите Intel Flash Tool Lite для обновления прошивки, это должно занять около 30 секунд, при этом плата загрузится в РЕЖИМ БЫСТРОЙ ЗАГРУЗКИ если бы это было успешно. Вы можете следить за этим с помощью шпатлевки или экранного терминала.
После загрузки в РЕЖИМ БЫСТРОЙ ЗАГРУЗКИ запустите инструмент быстрая загрузка в командной строке вашего главного компьютера, чтобы установить образ:
Позвольте вашему устройству перезагрузиться и дождитесь оболочки adb:
…и ты закончил! Теперь у вас есть Android-устройства, работающие на вашей плате!
Вы также можете подключить свою плату к Wi-Fi (нам это не понадобится для мигания светодиода, но вам, вероятно, понадобится подключение для будущих проектов)
edison: am startservice \ -n com.google.wifisetup/.WifiSetupService \ -a WifiSetupService.Connect \ -e ssid\ -e passphrase
Подождите несколько секунд, затем попробуйте отправить запрос на IP-адрес например, 8.8.8.8, чтобы убедиться, что это работает.
Создание приложения для Android Things
Следуйте этому руководству для создания приложения для Android Things. Шаги по сути те же, что и при создании обычного приложения для Android, но, поскольку у меня нет опыта, я следовал этому руководству для создания своего первого проекта для Android. Вам нужно будет настроить **Android 7.0 (API 24) ** и убедиться, что инструменты SDK обновлены. Как только проект будет создан, вам нужно будет изменить **build.gradle**и **AndroidManifext.xml ** файлы для настройки в качестве приложения для Android:
** файлы для настройки в качестве приложения для Android:
dependencies { ... provided 'com.google.android.things:androidthings:0.4-devpreview' }
** файлы для настройки в качестве приложения для Android:
Создайте и запустите свой проект, он должен быть успешным, но на данный момент он мало что даст…
Взаимодействие с периферийными устройствами
Самое интересное в Android Things (ha) заключается в том, что разработчики теперь могут взаимодействовать с аппаратной периферией в своем приложении. С помощью Службы диспетчера периферийных устройств API вы можете взаимодействовать с GPIO, PWM, I2C, SPI, I2S и UART вашего устройства, позволяя вам взаимодействовать с любым датчиком/приводом, используя эти стандартные протоколы.
В дополнение к периферийным API, Android Things также имеет концепцию Драйверов пользовательского пространства ; эти драйверы по сути являются абстракциями, поэтому вам не нужно беспокоиться об аппаратной реализации и конфигурациях платы при взаимодействии с периферийным устройством. Вы можете легко установить GPS/датчик температуры/аудиовыход/OLED-экран/драйвер HID и использовать его сразу, не беспокоясь о протоколе датчика и любых низкоуровневых интерфейсах периферийного ввода-вывода. Ознакомьтесь с ** библиотекой драйверов периферийных устройств * * чтобы узнать, что уже поддерживается и как добавить свое собственное.
На данный момент мы собираемся запустить базовые интерфейсы API периферийного ввода-вывода. Добавьте следующий код в свой HomeActivity.java чтобы получить список доступных GPIO на вашей плате (Примечание: в Android Studio нажмите Alt+Enter для быстрого исправления, он импортирует отсутствующие зависимости)
public class HomeActivity extends Activity { private static final String TAG = "HomeActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PeripheralManagerService service = new PeripheralManagerService(); Log.d(TAG, "Available GPIO: " + service.getGpioList()); } }
Создайте и запустите, откройте окно logcat , и вы увидите список GPIO:
Мигающий светодиод
Наконец-то! Поэтому после настройки платы и установки всех программных компонентов последним шагом является запуск кода для мигания светодиода. Вы можете настроить свою плату, как показано на схеме ниже, или просто использовать встроенный светодиод; как встроенный, так и внешний светодиод подключены к контакту GPIO 13:
Отредактируйте свой HomeActivity.java со следующим кодом:
public class HomeActivity extends Activity { private static final String TAG = "HomeActivity"; private static final int INTERVAL_BETWEEN_BLINKS_MS = 1000; private static final **String ***LED_PIN_NAME = "IO13"; private Handler mHandler = new Handler(); private Gpio mLedGpio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PeripheralManagerService service = new PeripheralManagerService(); Log.d(TAG, "Available GPIO: " + service.getGpioList()); try{ mLedGpio = service.openGpio(LED_PIN_NAME); mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); mHandler.post(mBlinkRunnable); }catch(IOException e){ Log.e(TAG, "Error on peripheral", e); } } @Override protected void onDestroy() { super.onDestroy(); // Step 4. Remove handler events on close. mHandler.removeCallbacks(mBlinkRunnable); // Step 5. Close the resource. if (mLedGpio != null) { try { mLedGpio.close(); } catch (IOException e) { Log.e(TAG, "Error on PeripheralIO API", e); } } } private Runnable mBlinkRunnable = new Runnable() { @Override public void run() { // Exit if the GPIO is already closed if (mLedGpio == null) { return; } try { // Step 3. Toggle the LED state mLedGpio.setValue(!mLedGpio.getValue()); // Step 4. Schedule another event after delay. mHandler.postDelayed(mBlinkRunnable, INTERVAL_BETWEEN_BLINKS_MS); } catch (IOException e) { Log.e(TAG, "Error on PeripheralIO API", e); } } }; }
Вот что происходит: Мы создали экземпляр Gpio , установите его на вывод 13 с помощью службы Диспетчер периферийных устройств, **установите его на вывод и выключите сначала с помощью **DIRECTION_OUT_INITIALLY_LOW , затем с помощью метода **setValue** включите/выключите его.
Вот и все! Поздравляем с миганием светодиода на Android-устройствах!
Если вы не хотите вводить эти фрагменты кода, вы можете просто перейти к https://developer.android.com/things/sdk/samples.html чтобы загрузить полный, готовый к запуску проект. Все это есть на GitHub, и там вы также можете найти множество дополнительных примеров кода.
Хотя я все еще находился в предварительном просмотре для разработчиков, у меня был отличный опыт работы с Android, и это было очень весело. Не стесняйтесь обращаться, если у вас есть какие-либо вопросы или отзывы:)
Оригинал: “https://dev.to/w4ilun/android-things-getting-to-blinky-3b2m”