Android Things 教程:Android Things 构建温度传感器 RESTful API

使用 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。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118G0WS7E00?refer=cp_1026

扫码关注云+社区