在 Wear 上发送和同步数据

有了 Wear OS by Google 谷歌,手表可以直接与网络通信,无需访问 Android 或 iOS 手机。

本页提到的功能需要以下依赖项和前提条件:

另外,Wearable Data Layer API(Google Play 服务的一部分)为应用提供了一个可选的信道。尽管 Wear 应用可以使用 Wearable Data Layer API 与手机应用通信,但不建议使用此 API 连接到网络

Data Layer API 由系统可以发送和同步的一组数据对象以及用于向应用通知某些事件的监听器组成,具体如下:

数据项
DataItem 提供在手持式设备和穿戴式设备之间自动同步的数据存储。
资源
Asset 对象用于发送二进制 blob,如图片。您将资源附加到数据项后,系统会自动为您处理资源传输,通过缓存大型资源来避免重复传输,从而节省蓝牙带宽。
消息
MessageClient 可以发送消息,适用于远程过程调用 (RPC),如从穿戴式设备控制手持式设备的媒体播放器,或者从手持式设备启动穿戴式设备上的 intent。消息也适用于单向请求或请求/响应通信模型。如果手持式设备和穿戴式设备已连接,系统会将消息加入队列以进行传递,并返回成功的结果代码。如果这些设备未连接,会返回错误。成功的结果代码并不能说明消息已成功传递,因为设备可能会在收到结果代码后断开连接。
信道
您可以使用 ChannelClient 将大型实体(如音乐和电影文件)从手持式设备传输到穿戴式设备。使用 ChannelClient 进行数据传输有以下好处:
  • 当使用附加到 DataItem 对象的 Asset 对象时,在未提供自动同步的情况下,在两台或更多连接的设备之间传输大型数据文件。 ChannelClient DataClient 更节省磁盘空间,后者在与连接的设备同步之前,会在本地设备上创建资源的副本。
  • 可靠地发送因过大而无法使用 MessageClient 发送的文件。
  • 传输流式数据,如从网络服务器提取的音乐或来自麦克风的语音数据。
WearableListenerService(适用于服务)
通过扩展 WearableListenerService,您可以在服务中监听重要的数据层事件。系统管理 WearableListenerService 的生命周期,在需要发送数据项或消息时绑定到该服务,而在不需要执行任何操作时取消绑定该服务。
OnDataChangedListener(适用于前台 Activity)
通过在某个 Activity 中实现 OnDataChangedListener,您可以在此 Activity 处于前台时侦听重要的数据层事件。使用此监听器代替 WearableListenerService 后,您可以仅在用户正在使用您的应用时监听相关更改。

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

重要提示:您的手机和 Wear APK 签名以及签名方案必须完全相同,Data Layer API 才能在设备之间成功通信。这包括您使用的 v1 和/或 v2 签名。确保在 build.gradle 中或在使用 Generate Signed APK 向导时正确设置了签名方案。

Wear OS 支持多部穿戴式设备连接到一部手持式设备。例如,如果用户在手持式设备上保存了一条记事,它会自动显示在用户的所有 Wear 设备上。为了在设备之间同步数据,Google 服务器在设备网络中托管了一个云节点。系统会将数据同步到直接连接的设备、云节点,以及通过 WLAN 连接到云节点的穿戴式设备。

图 1. 包含手持式设备和穿戴式设备的节点网络示例。

网络访问和同步
本课向您介绍如何获取高带宽网络。本课还提供了云消息传递等方面的入门知识等。
访问穿戴式设备的数据层
本课向您介绍如何创建用于访问 Data Layer API 的客户端。
同步数据项
数据项是存储在会从手持式设备自动同步到穿戴式设备的重复数据存储中的对象。
传输资源
资源是通常用来传输图片或媒体的二进制 blob。
收发消息
消息专为可在穿戴式设备和手持式设备之间来回发送的“发后不理”消息而设计。
处理数据层事件
接收有关数据层更改和其他事件的通知。
将 Wear 应用迁移到 GoogleApi
停止使用 GoogleApiClient 类。