数据层 API 概述

The cloud-based node is controlled by a Google-owned server
图 1. 手持设备和 Wear OS 设备节点网络示例。

可穿戴数据层 API(它是 Google Play 服务的一部分)提供了一个在可穿戴设备(如智能手表)和连接的手持设备(通常是智能手机)之间进行通信的通道。它是一种在设备之间同步和传输数据的方式。

注意:此 API 仅适用于 Wear OS 手表和配对的 Android 设备。对于与 iOS 手机配对的 Wear OS 手表,如果网络连接可用,应用可以查询其他基于云的 API。有关这些其他 API 的更多信息,请访问 Wear OS 上的网络访问和同步

注意:由于数据层 API 旨在用于手持设备和可穿戴设备之间的通信,因此这些是您可以在这些设备之间建立通信时使用的唯一 API。例如,不要尝试打开低级套接字来创建通信通道。

常见用例

数据层 API 尤其适用于健身和媒体用例。

健身应用

将锻炼数据从 Wear OS 应用发送到手机应用 健身应用通常需要将手表捕获的锻炼数据写入手机应用或健康连接。如果使用数据层 API 传输数据,请使用消息客户端将锻炼数据从 Wear OS 应用发送到手机应用,以便写入健康连接。

在家庭锻炼期间将实时数据流式传输到移动设备

一个常见的家庭锻炼场景是从 Wear OS 设备流式传输心率数据到移动设备,并在用户移动设备的屏幕上显示最新的心率信息。要流式传输此数据,请使用通道客户端

媒体应用

要通过手表到手机的暂停/恢复/开始/结束操作来控制媒体播放器,请使用消息客户端

通信选项

数据通过以下方式之一传输

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

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

蓝牙

当设备使用蓝牙连接时,数据层会使用此连接。设备之间存在一个使用标准蓝牙加密的单个加密通道,由 Google Play 服务管理。

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

通信安全性

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

  • 软件包名称必须在所有设备上匹配。
  • 软件包的签名必须在所有设备上匹配。

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

设置

可穿戴数据层 API 具有以下依赖项

在 Wear 模块的 build.gradle 文件中包含以下依赖项

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

促进初始配对过程

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

  • 在其他设备上安装应用。
  • 在其他设备上启动应用。
  • 在其他设备上启动特定活动。
  • 启动配套应用。

访问数据层

要调用数据层 API,请使用Wearable类获取各种客户端类的实例,例如DataClientMessageClient

有关更多信息,请参阅DataLayer 示例

使用最小客户端

要创建客户端,请参阅以下示例代码

Kotlin

val dataClient: DataClient = Wearable.getDataClient(context)

Java

DataClient dataClient = Wearable.getDataClient(context);

上下文可以是任何有效的 Android 上下文。如果您在Activity的范围内使用 API,请使用Wearable类的getDataClient()方法。这使得某些交互可以显示为对话框而不是通知,例如当提示用户更新其 Google Play 服务版本时。

默认情况下,对侦听器的回调是在应用的主 UI 线程上进行的。要在不同的线程上进行回调,请使用WearableOptions对象指定自定义Looper

Kotlin

runBlocking {
    Wearable.getDataClient(context, options)
}

Java

WearableOptions options = new WearableOptions.Builder().setLooper(myLooper).build();
DataClient dataClient = Wearable.getDataClient(context, options);

有关更多信息,请参阅WearableOptions.Builder参考。

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

可穿戴 API 客户端(例如DataClientMessageClient)创建起来成本低廉。因此,与其保留客户端,不如在需要时重新创建它们,使用适合您应用的样式。

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