你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure IoT SDK 针对 Android Things 平台进行开发

Azure IoT 中心 SDK 为 Windows、Linux、OSX、MBED 等流行平台,以及 Android 和 iOS 等移动平台提供第一层支持。 作为我们在 IoT 部署中实现更多选择和灵活性的承诺的一部分,Java SDK 还支持 Android Things 平台。 使用 Azure IoT 中心作为可扩展到数百万个同时连接的设备的中央消息中心时,开发人员可以在设备端利用 Android Things 操作系统的好处。

本教程概述使用 Azure IoT Java SDK 在 Android Things 上构建设备端应用程序的步骤。

先决条件

  • 受 Android Things 支持且运行 Android Things OS 的硬件。 可以按照有关如何刷新 Android Things OS 的 Android Things 文档进行操作。 确保 Android Things 设备连接到 Internet 并连接了基本外围设备(例如键盘、显示器和鼠标)。 本教程使用 Raspberry Pi 3。

  • 最新版本的 Android Studio

  • 最新版本的 Git

创建 IoT 中心

此部分介绍如何使用 Azure 门户创建 IoT 中心。

  1. 登录 Azure 门户

  2. 在 Azure 主页上,选择“+ 创建资源”按钮。

  3. 在“类别”菜单中,选择“物联网”,然后选择“IoT 中心”。

  4. 在“基本信息”选项卡上,按如下所示填写字段:

    • 订阅:选择要用于中心的订阅。

    • 资源组:选择资源组或新建资源组。 若要新建资源组,请选择“新建”并填写要使用的名称。 若要使用现有的资源组,请选择它。 有关详细信息,请参阅管理 Azure 资源管理器资源组

    • IoT 中心名称:输入中心的名称。 此名称必须全局唯一,长度介于 3 到 50 个字母数字字符之间。 名称还可以包含短破折号 ('-') 字符。

    • 区域:选择最近的区域,希望中心所在的位置。 某些功能(如 IoT 中心设备流)仅适用于特定区域。 对于这些受限功能,你必须选择受支持的区域之一。

    重要

    由于 IoT 中心将作为 DNS 终结点公开可发现,因此请务必避免在命名它时输入任何敏感信息或个人身份信息。

    显示如何在 Azure 门户中创建 IoT 中心的屏幕截图。

  5. 在完成时选择“下一步:网络”,继续创建中心。

    选择设备可以用来连接到 IoT 中心的终结点。 接受此示例的默认设置“公共访问”。

    选择可以连接的终结点。

  6. 在完成时选择“下一步:管理”,继续创建中心。

    使用 Azure 门户为新的中心设置大小和规模。

    可在此处接受默认设置。 如果需要,可以修改以下任何字段:

    • 定价和缩放层级:根据你需要多少功能以及每天通过解决方案发送多少消息来选择层级。 免费层适用于测试和评估。 如果是免费层,则可将 500 台设备连接到中心,每天最多可传输 8,000 条消息。 每个 Azure 订阅可以在免费层中创建一个 IoT 中心。 有关其他层级选项的详细信息,请参阅选择合适的 IoT 中心层级

      如果你正在按照快速入门进行操作,请选择免费层级。

    • IoT 中心单位:每日每单位允许的消息数取决于中心的定价层。 例如,如果希望中心支持 700,000 条消息引入,请选择两个 S1 层单位。

    • Microsoft Defender for IoT:启用 Defender 可为 IoT 和设备添加额外的一层防护。 此选项不可用于免费层的中心。 详细了解针对 Defender for IoT 中的 IoT 中心的安全建议

    • 基于角色的访问控制:此属性决定如何管理对 IoT 中心的访问。 允许共享访问策略或仅选择基于角色的访问控制。 有关详细信息,请参阅使用 Azure Active Directory 控制对 IoT 中心的访问

    • 设备到云的分区:此属性会将设备到云的消息与这些消息的同步读取器的数量关联起来。 大多数中心只需要 4 个分区。

  7. 在完成时选择“下一步:标记”继续到下一屏幕。

    标记是名称/值对。 可以为多个资源和资源组分配相同的标记,以便对资源进行分类并合并计费。 在本文档中,不会添加任何标记。 有关详细信息,请参阅使用标记来组织 Azure 资源

    使用 Azure 门户为中心分配标记。

  8. 在完成时选择“下一步:查看+创建”可查看选择。 你会看到类似于此屏幕的内容,但其中包含创建中心时选择的值。

    查看用于创建新中心的信息。

  9. 选择“创建”,以启动新中心的部署。 创建中心时,部署将持续几分钟。 部署完成后,选择“转到资源”以打开新的中心。

注册设备

必须先将设备注册到 IoT 中心,然后该设备才能进行连接。 在本快速入门中,将使用 Azure Cloud Shell 来注册模拟设备。

  1. 在 Azure Cloud Shell 中运行以下命令,以添加 IoT 中心 CLI 扩展并创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyAndroidThingsDevice:这是为注册的设备提供的名称。 如图所示使用 MyAndroidThingsDevice。 如果为设备选择不同名称,则可能还需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az extension add --name azure-iot
    az iot hub device-identity create --hub-name YourIoTHubName --device-id MyAndroidThingsDevice
    
  2. 在 Azure Cloud Shell 中运行以下命令,以获取刚注册设备的设备连接字符串。 将下面的 YourIoTHubName 替换为你为 IoT 中心选择的名称。

    az iot hub device-identity connection-string show --hub-name YourIoTHubName --device-id MyAndroidThingsDevice --output table
    

    记下如下所示的设备连接字符串:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyAndroidThingsDevice;SharedAccessKey={YourSharedAccessKey}

    稍后会在快速入门中用到此值。

构建 Android Things 应用程序

  1. 构建 Android Things 应用程序的第一步是连接到 Android Things 设备。 将 Android Things 设备连接到一个显示器,并将它连接到 Internet。 Android Things 提供了有关如何连接到 WiFi 的文档。 连接到 Internet 之后,记下“网络”下列出的 IP 地址。

  2. 使用 adb 工具,通过上面记下的 IP 地址连接到 Android Things 设备。 从终端使用此命令仔细检查连接。 应看到设备以“已连接”形式列出。

    adb devices
    
  3. 从此存储库下载我们适用于 Android/Android Things 的示例,或使用 Git。

    git clone https://github.com/Azure-Samples/azure-iot-samples-java.git
    
  4. 在 Android Studio 中,打开位于“\azure-iot-samples-java\iot-hub\Samples\device\AndroidSample”中的 Android 项目。

  5. 打开 gradle.properties 文件,将“Device_connection_string”替换为前面记下的设备连接字符串。

  6. 单击“运行 - 调试”,然后选择你的设备以将此代码部署到 Android Things 设备。

  7. 成功启动了应用程序后,可以看到应用程序在 Android Things 设备上运行。 此示例应用程序会发送随机生成的温度读数。

从中心读取遥测数据

可通过 IoT 中心查看接收的数据。 IoT 中心 CLI 扩展可以连接到 IoT 中心上的服务端事件终结点。 扩展会接收模拟设备发送的设备到云的消息。 IoT 中心后端应用程序通常在云中运行,接收和处理设备到云的消息。

在 Azure Cloud Shell 中运行以下命令,并将 YourIoTHubName 替换为 IoT 中心的名称:

az iot hub monitor-events --device-id MyAndroidThingsDevice --hub-name YourIoTHubName

清理资源

如果想要继续学习下一篇建议的文章,可以保留已创建的资源,以便重复使用。

否则,可删除本文中创建的 Azure 资源,避免收费。

重要

删除资源组的操作不可逆。 资源组以及包含在其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有的包含要保留资源的资源组中创建了 IoT 中心,则只删除 IoT 中心资源本身,而不要删除资源组。

若要按名称删除资源组,请执行以下操作:

  1. 登录到 Azure 门户,然后选择“资源组”。

  2. 在“按名称筛选”文本框中,键入包含 IoT 中心的资源组的名称。

  3. 在结果列表中的资源组右侧,选择“...”,然后选择“删除资源组” 。

    删除

  4. 系统会要求确认是否删除资源组。 再次键入资源组的名称进行确认,然后选择“删除” 。 片刻之后,将会删除该资源组及其包含的所有资源。

后续步骤