尝试从仿真移动设备发送消息到仿真耗材设备。我可以通过Android Wear应用程序将磨损设备配对,并确认磨损设备的onPeerConnected
已被击中(onMessageReceived
不是)。可穿戴MessageAPI onMessageReceived从未命中,不同设备ID的
使用两个代码版本返回node.getId()
会导致两个不同的磨损设备ID。
运行此:
new Thread(new Runnable() {
@Override
public void run() {
NodeApi.GetLocalNodeResult nodes = Wearable.NodeApi.getLocalNode(mGoogleApiClient).await();
Node node = nodes.getNode();
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "Hello Watch 1", null).await();
if (!result.getStatus().isSuccess()) {
Log.e(getPackageName(), "error");
} else {
Log.i(getPackageName(), "success!!!! sent to: " + node.getId());
}
}
}).start
回报:10月8日至9日:24:33.106 17914-18007/com.wear.myapp I/com.wear.myapp:成功!!!!发送到:223faf0e
运行此:
new Thread(new Runnable() {
@Override
public void run() {
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
for (Node node : nodes.getNodes()) {
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "Hello Watch 2", null).await();
if (!result.getStatus().isSuccess()) {
Log.e(getPackageName(), "error");
} else {
Log.i(getPackageName(), "success!!!! sent to: " + node.getId());
}
}
}
}).start();
返回:十月八日至九日:24:33.108 17914-18006/com.wear.myapp I/com.wear.streamer:成功!!!!发送到:3a000c12
即使陌生人在磨损设备假的节点ID硬编码仍然返回日志中的成功消息。感觉我得到了一个假阳性结果。
WearableListenerService:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.i(getPackageName(), "Message received");
}
@Override
public void onPeerConnected(Node peer) {
Log.i(getPackageName(), "Peer connected");
}
我已经通过类似这样每做题阅读,但还没有看到任何人提不同的设备ID。我已经三重检查了移动和磨损之间的应用ID和相关性是相同的。
UPDATE:
如果取消配对磨损模拟器和运行Wearable.NodeApi.getLocalNode
我仍然获得了NODEID返回,而Wearable.NodeApi.getConnectedNodes
没有,这让我相信getConnectedNodes
是我应该使用。
另外,关闭Wear模拟器仍然返回一个连接的节点ID为getLocalNode
,这导致我相信它正在返回除手表之外的东西。
我不知道'onPeerConnected'已被弃用。通常情况下,Android Studio会显示一条消息,如果api已被弃用,但它不适用于'onPeerConnected'。不幸的是,我拥有的设备没有我需要的API,所以我不得不使用模拟器。我会研究'CapabilityAPI'。谢谢 –
如果这将有助于任何人,您可以使用模拟器从手机发送消息到磨损设备,使用记录不佳的“CapabilityApi” –