Android Wear + Wearable ChannelApi openChannel 未打开远程节点?

Android Wear + Wearable ChannelApi openChannel not opening with remote node?

通过本地节点打开频道时:

Wearable.NodeApi.getLocalNode(googleApiClient)

... onChannelOpened 侦听器 成功 触发。

但是,当通过远程节点打开频道时:

Wearable.NodeApi.getConnectedNodes(googleApiClient)

... onChannelOpened 侦听器 never 触发,随后永远无法通过此频道共享文件。

我知道这两个设备都需要 openChannel,但是通道侦听器只在本地打开它的设备上触发...如果远程设备不知道它已连接,它如何发送或接收文件?这是两个设备之间的细分

可穿戴:

  1. 保存本地文件 - 成功
  2. .openChannel 与本地(可穿戴)节点 - 成功
  3. .sendFile 到频道 - 成功

持有的句柄:

  1. .openChannel 与远程(可穿戴)节点 - 失败
  2. .从频道接收文件 - 失败
  3. 显示文件 - 失败

疑难解答

以下是一些需要检查的事项:

  • 您是否收到消息事件或数据项更新?如果你调用 Wearable.MessageApi.sendMessage, do you get onMessageReceived on the other device? If not, there could be something wrong with how WearableListenerService 是在另一个节点上设置的,或者你的应用程序打包的方式(例如你的微应用程序和应用程序在不同的包中,或者使用不同的密钥签名)。

  • 你运行是Android Wear app的最新版本吗?最近添加了频道 API,可能您的手表还没有收到支持它的更新。版本1.1.1.1889093应该没问题。

如何使用频道API

顺便说一句,听起来您可以简化频道的使用。无需同时打开到本地和远程节点的通道。您通常使用 API 的方式是:

  1. 决定是从手表还是从 phone 开始频道。在这种情况下,听起来你是从手表开始的。

  2. 在手表应用中,调用Wearable.ChannelApi.openChannel, pointing at the phone app. This method returns a PendingResult<OpenChannelResult>. When it completes successfully, you'll get a Channel对象。这是手表端的频道,你可以用它来发送文件。

  3. 在 phone 应用程序中,包含一个 WearableListenerService,它应该得到一个 onChannelOpened 事件。该方法将传递一个 Channel 对象,它是通道的 phone 一侧。您可以对该对象调用 receiveFile

如您所见,您应该只调用一次 openChannel: 到远程节点。