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 传输的所有数据均经过端到端加密。

通信安全性

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

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

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

设置

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 服务在应用运行期间进行了更新,客户端状态会保留。