Рубрики
Без рубрики

Android-вещи — Переход к миганию

(Примечание: эти сообщения перенесены из моего предыдущего medium.com блог) Android Вещи приносит Android и… С тегами android, ios, java, helloworld.

(Примечание: эти сообщения перенесены из моего предыдущего (Примечание: эти сообщения перенесены из моего предыдущего блог)

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 вместо этого.

Настройка программного обеспечения

Нам нужно будет загрузить/установить пару вещей, чтобы начать работу:

  1. Облегченный инструмент Intel Flash Tool/| ( Для обновления прошивки на Intel Edison) Системный образ Android-вещей

  2. (Системный образ Android-устройств для вашей платы) Студия Android

  3. (Наша среда разработки и инструменты для разработки)

Первое, что вам нужно сделать, это установить Android Studio и обновить ее до последней версии SDK/инструментов. Вам понадобится использовать эти инструменты позже для обновления платы и развертывания приложения. После установки убедитесь, что у вас есть **adb** и **быстрая загрузка** в командной строке.

Как только это будет готово, загрузите Intel Flash Tool Lite вместе с системным образом Android Things. Вы можете следовать этому руководству здесь для получения подробной информации о том, как обновить прошивку и установить Android-устройства. В flashall.sh сценарий, упомянутый в руководстве, не сработал для меня, поэтому вот краткое описание шагов, которые я предпринял, чтобы запустить и запустить доску:

  1. Запустите Intel Flash Tool Lite для обновления прошивки, это должно занять около 30 секунд, при этом плата загрузится в РЕЖИМ БЫСТРОЙ ЗАГРУЗКИ если бы это было успешно. Вы можете следить за этим с помощью шпатлевки или экранного терминала.

  2. После загрузки в РЕЖИМ БЫСТРОЙ ЗАГРУЗКИ запустите инструмент быстрая загрузка в командной строке вашего главного компьютера, чтобы установить образ:

  3. Позвольте вашему устройству перезагрузиться и дождитесь оболочки 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”