这篇文章介绍了如何为Android Things构建一个Android IoT应用。 您可能已经知道,最近Google发行了一个新的IoT操作系统,称为Android Things。 Android Things是从Android派生的操作系统,有趣的是,我们可以重用我们的Android知识来开发Android IoT应用。 在深入研究Android IoT应用之前,了解什么是Android Things及其工作原理非常重要。
这篇文章的目标是:
- 使用Android IoT应用程序构建一个简单的RGB led控制器
- 构建一个使用使用Android API开发的UI的Android IoT应用
为此,我们将使用Raspberry Pi 3作为IoT原型板 。 即使您可以使用与Android Things兼容的其他开发板。
如果您想了解最终结果,请观看以下视频,了解运行中的Android IoT应用程序:
这个Android IoT应用可帮助您熟悉新的Android Things API。 此外,此物联网应用有助于概述如何开发Android物联网应用UI。
Android IoT应用入门
通常,物联网项目有两个方面:电气/电子方面和软件方面。 为了使事情简单,以便我们专注于Android IoT应用程序,此IoT应用程序控制一个简单的RGB led(共阳极)。 RGB LED使用220Ω电阻连接到Raspberry,每种颜色一个。 原理图如下所示:
RGB LED是普通的阳极LED,因此Raspberry Pi 3为引脚阳极供电。 控制led颜色的RGB引脚连接到Raspberry引脚:
- 销29
- 销31
- 销33
这些引脚号很重要,因为稍后我们将在Android IoT应用中使用它们。 在打开Raspberry之前,请检查两次连接。
现在是时候使用Android studio创建IoT应用程序了。 第一步是使用build.gradle配置Android IoT项目:
dependencies {
provided 'com.google.android.things:androidthings:0.1-devpreview'
}
就像我们在Android中一样,Android Things使用Activity。 因此,让我们创建一个名为RGBThingActivity的类,并在onCreate方法中处理Pin通信。
Android Thing PeripherManagerService
为了处理与RGB led的通信,我们使用GPIO引脚 。 GPIO引脚使用可编程接口读取设备状态或设置输出值(高或低)。 使用树莓派GPIO引脚,我们可以打开或关闭三个颜色分量(红色,绿色和蓝色)。
Android Things SDK提供了一项名为PeripheralManagerService的服务,以抽象化GPIO通信接口。 每当我们要读取或写入数据时,都必须使用它。 首先,Android IoT应用程序初始化服务,然后设置引脚值:
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),代码为:
blueIO = manager.openGpio("BCM5");
开始时,我们将所有引脚都设为低电平(或关闭),因此LED处于关闭状态。 更改引脚值:从低到高或从高到低,我们有不同的LED颜色。
Android IoT应用程序UI
Android Things提供的另一个有趣的功能是UI界面。 我们可以像开发Android UI一样开发Android IoT应用程序的UI界面。 与在Android应用程序中一样,UI为XML格式。 在此示例中,我们要使用三个开关来控制RGB led:
在onCreate
方法中,应用程序设置布局:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
..}
并处理用户切换:
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
标签内添加:
然后声明我们的活动是物联网活动,它在启动时启动:
结论
在本文的结尾,您会更好地了解如何使用Android Things。 有趣的方面是,使用一些新的API,Android开发人员可以为下一次称为IoT的技术革命做好准备。 此外,开发过程与Android应用程序中使用的过程相同。
使用几行代码,Android开发人员可以构建Android IoT应用 。
翻译自: https://www.javacodegeeks.com/2017/01/building-android-iot-app-android-things.html