使用新的Channel API通过蓝牙连接正常工作,但如果我现在切换到云节点(WIFI模式),则无法打开频道。结果始终为null并且运行到超时。
view.setText("something");
view.postDelayed(new Runnable(){
public void run(){
view.setText("somethingelse.");
}
}, 200);
这是在节点之间建立WIFI连接的正确方法吗?是否有一个示例如何实现这一点?
观看: (之后通过消息将nodeID发送到手机。我也看到了来自这个线程Android Wear + Wearable ChannelApi openChannel not opening with remote node?的问题后使用了这种方法)
on watch :(将检索到的localNodeID发送到手机)
ChannelApi.OpenChannelResult result = Wearable.ChannelApi.openChannel(googleApiClient, "cloud", Constants.COPY_FILE_VIA_CHANNEL_PATH).await();
在电话上:
NodeApi.GetLocalNodeResult localNodeResult = Wearable.NodeApi.getLocalNode(googleApiClient).await();
观看:
ChannelApi.OpenChannelResult result = Wearable.ChannelApi.openChannel(googleApiClient, localNodeId, Constants.COPY_FILE_VIA_CHANNEL_PATH).await();
Channel.GetOutputStreamResult getOutputStreamResult = channel.getOutputStream(googleApiClient).await();
OutputStream outputStream = getOutputStreamResult.getOutputStream();
outputStream.write(byteChunk);
outputStream.close();
这是目前使用Channel API的“Wear Media”应用程序内的实现。在设置中,chunksize可以修改为1000到9999999之间的任何字节值,但在传输和激活蓝牙和WIFI期间,总是使用蓝牙连接。
答案 0 :(得分:0)
"cloud"
不是有效的节点ID - 您需要使用设备的节点ID,例如手机或Android Wear设备。设备将根据底层连接自动从蓝牙切换到wifi - 您无需做任何事情。您可以使用与CapabilityApi类似的sending messages training来正确确定用于打开频道的节点ID。