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,但是通道侦听器只在本地打开它的设备上触发...如果远程设备不知道它已连接,它如何发送或接收文件?这是两个设备之间的细分
可穿戴:
- 保存本地文件 - 成功
- .openChannel 与本地(可穿戴)节点 - 成功
- .sendFile 到频道 - 成功
持有的句柄:
- .openChannel 与远程(可穿戴)节点 - 失败
- .从频道接收文件 - 失败
- 显示文件 - 失败
疑难解答
以下是一些需要检查的事项:
您是否收到消息事件或数据项更新?如果你调用 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 的方式是:
决定是从手表还是从 phone 开始频道。在这种情况下,听起来你是从手表开始的。
在手表应用中,调用Wearable.ChannelApi.openChannel
, pointing at the phone app. This method returns a PendingResult<OpenChannelResult>
. When it completes successfully, you'll get a Channel
对象。这是手表端的频道,你可以用它来发送文件。
在 phone 应用程序中,包含一个 WearableListenerService
,它应该得到一个 onChannelOpened
事件。该方法将传递一个 Channel
对象,它是通道的 phone 一侧。您可以对该对象调用 receiveFile
。
如您所见,您应该只调用一次 openChannel
: 到远程节点。
通过本地节点打开频道时:
Wearable.NodeApi.getLocalNode(googleApiClient)
... onChannelOpened 侦听器 成功 触发。
但是,当通过远程节点打开频道时:
Wearable.NodeApi.getConnectedNodes(googleApiClient)
... onChannelOpened 侦听器 never 触发,随后永远无法通过此频道共享文件。
我知道这两个设备都需要 openChannel,但是通道侦听器只在本地打开它的设备上触发...如果远程设备不知道它已连接,它如何发送或接收文件?这是两个设备之间的细分
可穿戴:
- 保存本地文件 - 成功
- .openChannel 与本地(可穿戴)节点 - 成功
- .sendFile 到频道 - 成功
持有的句柄:
- .openChannel 与远程(可穿戴)节点 - 失败
- .从频道接收文件 - 失败
- 显示文件 - 失败
疑难解答
以下是一些需要检查的事项:
您是否收到消息事件或数据项更新?如果你调用
Wearable.MessageApi.sendMessage
, do you getonMessageReceived
on the other device? If not, there could be something wrong with howWearableListenerService
是在另一个节点上设置的,或者你的应用程序打包的方式(例如你的微应用程序和应用程序在不同的包中,或者使用不同的密钥签名)。你运行是Android Wear app的最新版本吗?最近添加了频道 API,可能您的手表还没有收到支持它的更新。版本1.1.1.1889093应该没问题。
如何使用频道API
顺便说一句,听起来您可以简化频道的使用。无需同时打开到本地和远程节点的通道。您通常使用 API 的方式是:
决定是从手表还是从 phone 开始频道。在这种情况下,听起来你是从手表开始的。
在手表应用中,调用
Wearable.ChannelApi.openChannel
, pointing at the phone app. This method returns aPendingResult<OpenChannelResult>
. When it completes successfully, you'll get aChannel
对象。这是手表端的频道,你可以用它来发送文件。在 phone 应用程序中,包含一个
WearableListenerService
,它应该得到一个onChannelOpened
事件。该方法将传递一个Channel
对象,它是通道的 phone 一侧。您可以对该对象调用receiveFile
。
如您所见,您应该只调用一次 openChannel
: 到远程节点。