В этом посте описывается, как создать приложение 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 . |