【发布时间】:2014-07-11 16:27:27
【问题描述】:
我有一个基本的 Android Wear 应用程序,它成功地使用可穿戴数据层在移动设备和 Wear 之间发送和接收消息。
但是,每当我(从移动设备或 Wear 设备)发送消息时,另一端都会多次收到消息(例如 5-17 的任何时间)。为什么不是只收到一次?据我所知,它只发送一次。
成功连接后,这是我的发送消息代码(两端相同):
private void sendMsgToWear(final String strMsg){
new AsyncTask<Void, Void, List<Node>>(){
@Override
protected List<Node> doInBackground(Void... params) {
return getNodes();
}
@Override
protected void onPostExecute(List<Node> nodeList) {
for(Node node : nodeList) {
Log.v("DEVELOPER", "......Phone: Sending Msg: " + strMsg + " to node: " + node.getId());
PendingResult<MessageApi.SendMessageResult> result = Wearable.MessageApi.sendMessage(
mGoogleApiClient,
node.getId(),
strMsg,
null
);
result.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() {
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult) {
Log.v("DEVELOPER", "......Phone: " + sendMessageResult.getStatus().getStatusMessage());
}
});
}
}
}.execute();
}
private List<Node> getNodes() {
List<Node> nodes = new ArrayList<Node>();
NodeApi.GetConnectedNodesResult rawNodes =
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
for (Node node : rawNodes.getNodes()) {
nodes.add(node);
nodeID = node.getId();
}
return nodes;
}
这是我在实现 MessageApi.MessageListener 的活动上接收的方式:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.d("DEVELOPER", "......Wear: successfully received phone to wear communication!");
}
我在发送端的输出如下所示:
07-11 10:54:57.646 26920-28711/com.wearTest.message V/DEVELOPER﹕ ......Phone: Sending Msg: testMessage to node: 6ecc099a-60f8-4c3d-90fe-fa2f248c6bf7
07-11 10:54:57.666 26920-26920/com.wearTest.message V/DEVELOPER﹕ ......Phone: null
以及接收端日志:
07-11 10:54:57.962 5509-5672/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.962 5509-5610/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.962 5509-5660/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.962 5509-5521/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.962 5509-5539/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5570/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5604/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5601/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5566/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5520/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5582/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.972 5509-5567/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:57.982 5509-5587/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:58.002 5509-5581/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:58.052 5509-5581/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:58.052 5509-5587/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
07-11 10:54:58.062 5509-5570/com.wearTest.message D/DEVELOPER﹕ ......Wear: successfully received phone to wear communication!
提前致谢!
【问题讨论】:
-
以防万一,您是否检查过您只注册了一次接收方?
-
啊,谢谢马蒂亚什!白骨移动,就是这样。
-
我很高兴这很容易。 :) 你打算删除这个问题,还是我应该添加一个答案?
-
继续添加一个让我接受的答案...它将为其他可怜的灵魂节省一小时徒劳的工作!