使用 Android Things 构建 RESTful API 接口是非常有用的,无论何时,我们都必须将 Android Things 连接到外部系统。本文将介绍如何使用 Android Things 构建 RESTful API 接口,以便其他应用程序或应用程序可以调用此 API。有几种情况,Android Things 必须与外部系统集成,并且需要有一个 RESTful 接口来调用它的服务。即使这个集成问题有不同的解决方案,在 Android Things 中实现一个 RESTful API 接口,也可以保证与使用不同技术实现的其他系统的兼容性。
我们之前已经讨论过,如何在 Android Things 和 Firebase 之间交换数据,以及如何将 Android Things 与云平台进行整合。本文涵盖了不同的集成方面。根据我们不得不面对的情况,我们可以选择正确的整合策略。我们需要记住,当我们不得不在不同系统之间交换数据时,最好的选择之一就是使用 MQTT 协议。
为了将我们的注意力集中在 Android Things 中构建 RESTful API 接口的过程中,我们将使用一个简单的读取温度,压力和湿度的传感器。这个传感器是 BMP280 - 一个 I2C 传感器。
本教程由两个不同的部分组成:
原理图:如何将传感器连接到 Android Things
如何构建 RESTful API 接口来读取传感器数据
连接 BMP280 到 Android Things
在这第一步中,我们介绍了如何将 BMP280 传感器连接到 Android Things。无论如何,这个话题在这个博客上已经有好几次了,但是为了更新你的记忆,BMP280 是一个 I2C 传感器,所以它使用四个引脚连接到 Android Things:
VCC
GND
时钟(CLK)
数据(SDA)
电路连接图如下所示:
Android Thing 传感器连接图
请参阅 Android Things Peripherals I/O 以了解此项目中使用的引脚。此项目使用树莓派,但您可以使用任何兼容 Android Things 的平台。
接着,使用 Android Things Studio 创建一个新项目,并将以下依赖项添加到 Gradle 文件中:
让我们创建一个新的类,管理与传感器的连接并读取温度和压力:
就是这样,现在 Android Things 已连接到传感器,Android Things 应用程序可以读取其值。
使用 Android Things 构建 RESTful API 接口
这是本文最有趣的部分。本节的目标是使用 Android Things 构建一个 RESTful API 接口,以便我们可以展示一组服务来读取传感器的温度和压力。换句话说,我们可以想象我们有一个外部应用程序或一个应用程序,想远程读取传感器的温度和压力。
为此,此 Android Things 项目使用 Restlet 框架。这个框架提供了几个实现,其中一个是 Android。在 Android 中使用和简化构建 Restful API 接口的过程非常简单。
公开 RESTful API 接口的过程由三个步骤组成:
定义作为服务的资源
构建一个 Android 服务来处理传入的请求
定义一个简单的 Android Activity 来启动和停止服务
在深入实现细节之前,请将以下库添加到我们的 Android Things 项目中:
这些库是使用 Android Things 实现 RESTful API 接口所必需的。
让我们看看如何实施所有这些步骤。
步骤1:定义作为服务的资源
我们应该实现两个 RESTful API:一个读取温度,另一个读取压力。为此,有必要实现两个不同的类。一个温度:
另外一个是温力:
这两个类都扩展了 ServerResource,而外部应用程序可以使用 HTTP GET 请求来调用它们,因为我们要从传感器读取信息。
而且,这个 API 返回一个 JSON 数据结构。 您可以注意到,在前面的类中,它们调用了前面步骤中实现的 DeviceManager,它处理到传感器的连接。
步骤2:构建一个 Android 服务来处理传入的请求
在这一步中,有必要实现一个 Android 服务来处理传入的请求。正如您可能已经知道的那样,我们必须使用 Android 服务,因为 Android 服务比 Android Activity 具有“更长”的生命 - 并且即使应用 UI 不再可用,我们也希望完成任务。
这个 Android Things 项目使用一个 IntentService,而这个类是:
这个类非常简单:一开始,它定义了服务器监听的端口,然后定义一个路由器。在这种情况下,路由器需要将请求分派给不同的资源。我们可以附上以下 URI:
来获得当前的温度
以获取当前压力
然后该类实现 来管理启动和停止服务器。
定义一个简单的 Android Activity 来启动和停止服务
这是这个过程中的最后一步,并考虑构建 Android Things Activity:
在这个类中,简单地说,Android Things 应用程序调用以前使用两种类型的意图(Intent)定义的意向服务。
就是这样,我们可以运行 Android Things 应用并对其进行测试。
使用 Android Things 测试 Restful API 接口
在这一步中,我们可以测试应用程序并检查结果。
例如,要读取温度,让我们打开一个浏览器,并写下以下 URL 来获取温度:
获取压力值:
结果是保存有温度或压力的 JSON 数据。
结果
在这篇文章的最后,希望您已经了解了如何使用 Android Things 实现一个 RESTful API 接口以及如何调用它。这是一个简单的项目,但它展示了我们如何使用 Restful API 接口将 Android Things 与外部系统集成。我们可以进一步扩展这个 Android Things 项目来实现其他的 API。例如,我们可以使用 POST 请求发送数据并控制远程外围设备,如电机或 LED。
领取专属 10元无门槛券
私享最新 技术干货