Статьи

Создание Android IoT-приложения для Android-вещей

В этом посте описывается, как создать приложение Android IoT для Android Things. Как вы, возможно, уже знаете, недавно Google выпустил новую операционную систему IoT под названием Android Things. Android Things — это операционная система, созданная на базе Android, и интересным является то, что мы можем повторно использовать наши знания Android для разработки приложений Android IoT. Прежде чем погрузиться в приложение Android IoT, важно знать, что такое Android Things и как оно работает .

Цели этого поста:

  • Создайте простой RGB светодиодный контроллер с помощью приложения Android IoT
  • Создайте приложение Android IoT, которое использует пользовательский интерфейс, разработанный с использованием Android API

Для этого мы будем использовать Raspberry Pi 3 в качестве платы для прототипирования IoT . Даже если вы можете использовать другие платы разработки, совместимые с Android Things.

Если вы хотите узнать окончательный результат, на видео ниже показано приложение Android IoT в действии:

Это Android IoT приложение поможет вам ознакомиться с новыми API Android Things API. Кроме того, это IoT-приложение полезно иметь обзор о разработке пользовательского интерфейса IoT-приложения для Android.

Начало работы с приложением Android IoT

Обычно проект IoT имеет две стороны: электрическую / электронную сторону и сторону программного обеспечения. Для простоты, чтобы мы могли сосредоточиться на приложении IoT для Android, это приложение IoT управляет простым светодиодом RGB (общий анод). Этот светодиод RGB подключен к Raspberry с помощью резистора 220 Ом, по одному на каждый цвет. Принципиальная схема показана ниже:

Светодиод RGB — это обычный анодный светодиод, поэтому Raspberry Pi 3 питает пин-анод. Контакты RGB, управляющие цветом светодиодов, подключены к контактам Raspberry:

  • Пин 29
  • Контакт 31
  • Контакт 33

Эти пин-коды важны, потому что позже мы будем использовать их в приложении Android IoT. Проверьте дважды соединения перед включением Raspberry.

Теперь пришло время создать приложение IoT с помощью студии Android. Первым шагом является настройка проекта Android IoT с использованием build.gradle:

1
2
3
dependencies {
  provided 'com.google.android.things:androidthings:0.1-devpreview'
}

Android Things использует активность, как мы используем в Android. Итак, давайте создадим класс с именем RGBThingActivity и в методе onCreate мы обрабатываем связь Pin.

Android Thing PeripherManagerService

Для обработки связи со светодиодом RGB мы используем контакты GPIO . Выводы GPIO используют программируемый интерфейс для считывания состояния устройства или для установки выходного значения (высокого или низкого). Используя Raspberry GPIO Pins, мы включаем или выключаем три цветовых компонента (красный, зеленый и синий).

Android Things SDK предоставляет сервис PeripheralManagerService для абстрагирования коммуникационного интерфейса GPIO. Мы должны использовать его каждый раз, когда хотим прочитать или записать данные. Сначала приложение Android IoT инициализирует службу, а затем устанавливает значения контактов:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
try {
  PeripheralManagerService manager = new PeripheralManagerService();
  blueIO = manager.openGpio("BCM5");
  blueIO.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
  greenIO = manager.openGpio("BCM6");
  greenIO.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
  redIO = manager.openGpio("BCM13");
  redIO.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
  redIO.setValue(false);
  blueIO.setValue(false);
  greenIO.setValue(false);
}
catch (IOException e) {
  Log.w(TAG, "Unable to access GPIO", e);
}

Этот фрагмент кода вводит некоторые новые важные новые аспекты. Прежде всего, мы должны выбрать правильные контакты. Если мы привыкли к Raspberry, мы знаем, что каждому пин-коду соответствует номер. Точно так же Android Things использует ту же модель адресации, в любом случае контакты имеют разные имена. Используя ссылку на пин-код Raspberry, вы можете узнать адрес каждого контакта. Эти имена адресов используются в коде выше. Например, чтобы использовать контакт BCM5 (или контакт 29), используйте следующий код:

1
blueIO = manager.openGpio("BCM5");

Вначале мы поворачиваем весь вывод на низкий уровень (или выключаем), чтобы светодиод был выключен. Изменяя значения пинов: от низкого к высокому или от высокого к низкому, мы имеем разные цвета светодиодов.

Пользовательский интерфейс Android IoT

Еще одна интересная функция, предоставляемая Android Things, — это интерфейс пользовательского интерфейса. Мы можем разработать интерфейс пользовательского интерфейса для приложения Android IoT так же, как мы разработали пользовательский интерфейс Android. Как и в приложении для Android, пользовательский интерфейс представлен в формате XML. В этом примере мы хотим управлять светодиодом RGB с помощью трех переключений:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
 
 <Switch android:text="Red"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/switchRed"
         android:layout_marginTop="20dp"/>
 
 <Switch android:text="Green"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/switchGreen"
        android:layout_marginTop="20dp"/>
 
 <Switch android:text="Blue"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/switchBlue"
         android:layout_marginTop="20dp"/>
 
</LinearLayout>

В методе onCreate приложение устанавливает макет:

1
2
3
4
5
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
..}

и обрабатывать пользовательский переключатель:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
Switch switchRed = (Switch) findViewById(R.id.switchRed);
switchRed.setOnCheckedChangeListener(
  new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView,
             boolean isChecked) {
      try {
        redIO.setValue(!isChecked);
      }
      catch (IOException e) {
         Log.w(TAG, "Red GPIO Error", e);
      }
   }
});

Вы должны повторить тот же кусок кода для других выводов. Окончательный результат ниже:

Последний аспект — это Manifest.xml . Чтобы использовать наше приложение, мы должны добавить внутри тега application :

1
<uses-library android:name="com.google.android.things"/>

и затем объявите, что наша активность — это деятельность IoT, и она начинается при загрузке:

1
2
3
4
<intent-filter>
    <category android:name="android.intent.category.IOT_LAUNCHER"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

Выводы

В конце этого поста вы немного лучше знаете, как использовать Android Things. Интересным аспектом является то, что с помощью нескольких новых API-интерфейсов разработчики Android могут быть готовы к следующей технологической революции под названием IoT. Более того, процесс разработки аналогичен используемому в Android-приложении.
Используя несколько строк кода, разработчик Android может создать приложение IoT для Android .

Ссылка: Создание Android IoT-приложения для Android Вещи от нашего партнера JCG Франческо Аццолы в блоге Surviving w / Android .