Data Layer API 概览

基于云的节点由 Google 拥有的服务器控制
图 1.包含手持式设备和 Wear OS 设备的节点网络示例。

Wearable Data Layer API(Google Play 服务的一部分)可在穿戴式设备(如智能手表)和已连接的手持设备(通常是智能手机)之间建立通信通道。这是一种在设备之间同步和转移数据的方式。

注意:此 API 仅适用于 Wear OS 手表和配对的 Android 设备。对于与 iOS 手机配对的 Wear OS 手表,在有互联网连接的情况下,应用可以查询其他云端 API。如需详细了解这些其他 API,请参阅 Wear OS 上的网络访问和同步

注意:由于数据层 API 专为手持式设备与穿戴式设备之间的通信而设计,因此您只能使用这些 API 在这些设备之间建立通信。例如,不要尝试打开低级套接字来创建信道。

常见用例

如果互动仅在手表和手机之间进行,请使用 Data Layer API。例如:

  • 遥控器:手表充当手机的遥控器(例如,控制手机上运行的音乐播放器、滑动演示文稿、充当相机快门)。
  • 手持设备应用启动:“在手机上打开”按钮功能。
  • 身份验证桥接:在初始设置期间,将会话令牌从手机发送到手表。

在许多常见场景中,您应改为使用现有的云基础架构,例如:

  • 保存数据:锻炼项目、笔记。
  • 获取内容:加载过往锻炼记录的列表、下载音乐、获取天气信息。
  • 同步状态:如果用户在网页上更改个人资料照片,手表会使用云端数据进行更新,而不是通过查询手机进行更新。

对于这些场景,请使用您自己的现有端点和基础架构,而不是 Data Layer API。

通信选项

数据通过以下任一方式进行转移:

  1. 直接:当 Wear OS 设备与其他设备之间建立蓝牙连接时。
  2. 通过可用网络(例如 LTE 或 Wi-Fi)使用 Google 服务器上的网络节点作为中介。

所有数据层客户端都可以使用蓝牙或云端交换数据,具体取决于设备可用的连接。假设使用数据层传输的数据有时可能使用 Google 拥有的服务器。

蓝牙

使用蓝牙连接设备时,数据层会使用此连接。 设备之间会建立一个使用标准蓝牙加密机制(由 Google Play 服务管理)的加密通道。

当蓝牙不可用时,数据会自动通过 Google Cloud 进行路由。通过 Google Cloud 传输的所有数据均经过端到端加密。

通信的安全性

Google Play 服务会实施以下限制,以在安装在 Wear OS 设备上的应用与安装在附近的手持设备上的同一应用之间提供更安全的通信:

  • 软件包名称必须在各种设备间保持一致。
  • 软件包签名必须在各种设备间保持一致。

无论连接类型如何,其他应用都无法访问这些数据。

设置

Wearable Data Layer API 的依赖项如下:

在 Wear 模块的 build.gradle 文件中添加以下依赖项:

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:19.0.0")
}

简化初始配对流程

Horologist 在平台 API 的基础上提供了多个辅助库。它包含一个数据层库,可帮助在移动设备和 Wear OS 设备之间建立连接。此外,它还提供便捷的 API 来执行以下操作:

  • 在另一台设备上安装该应用。
  • 在另一部设备上启动该应用。
  • 在另一部设备上启动特定 activity。
  • 启动配套应用。

访问数据层

如需调用 Data Layer API,请使用 Wearable 类获取各种客户端类的实例,例如 DataClientMessageClient

如需了解详情,请参阅 DataLayer 示例

使用最小客户端

如需创建客户端,请参阅以下示例代码:

val dataClient = Wearable.getDataClient(this)

val available = try {
    GoogleApiAvailability.getInstance()
        .checkApiAvailability(client)
        .await()
    true
} catch (e: AvailabilityException) {
    // API is not available in this device.
    false
}

上下文可以是任何有效的 Android 上下文。如果您在 Activity 的范围内使用该 API,请使用 Wearable 类的 getDataClient() 方法。该方法能让某些互动以对话框形式显示,而不是通知。例如,要求用户更新其 Google Play 服务版本时,就是如此。

默认情况下,监听器的回调在应用的主界面线程上进行。如需在其他线程上进行回调,请使用 WearableOptions 对象指定自定义 Looper

如需了解详情,请参阅 WearableOptions.Builder 参考文档。

根据需要重新创建客户端实例

Wearable API 客户端的创建成本很低,例如 DataClientMessageClient 就是如此。因此,您无需保留客户端,而是可以根据需要使用适合您应用的样式重新创建它们。

客户端状态(例如,一组已注册的监听器)在所有客户端之间共享,并且如果 Google Play 服务在应用运行期间进行了更新,客户端状态会保留。