Android Wear Data Layer API 只工作一次
Android Wear Data Layer API working only one time
我使用数据层 API 将命令从我的可穿戴设备发送到我的手持设备。直到今天下午,这一切都很好。我在我的代码中没有做任何更改,但突然只有手持应用程序重新启动后的第一个命令有效。以下所有命令均在可穿戴设备上发送,但不会在手持设备上接收。我用断点遍历了所有这些,并做了两次同样的事情,但只有第一次成功了。
可穿戴代码:
public void run() {
Task<List<Node>> nodeListTask = Wearable.getNodeClient(getApplicationContext()).getConnectedNodes();
try {
List<Node> nodes = Tasks.await(nodeListTask);
for (Node node : nodes) {
Task<Integer> sendMessageTask = Wearable.getMessageClient(MainActivity.this).sendMessage(node.getId(), "/wear_control", TextUtils.join(";", slices).getBytes());
Integer result = Tasks.await(sendMessageTask);
}
} catch (Exception exception) {
exception.printStackTrace();
//TODO aaaaaaaaaaaaaaaaaa
}
slices.clear();
}
来自手持设备的代码(在前台服务中):
@Override
public void onMessageReceived(MessageEvent messageEvent) {
if (messageEvent.getPath().equals("/wear_control")) {
ProcessMessage.evaluate(new String(messageEvent.getData()), this);
}
else {
super.onMessageReceived(messageEvent);
}
}
但正如我所说,我没有对代码进行任何更改,但它不再起作用了。
提前致谢。
经过一些调试,我发现我使用的 shell 代码有一个 process.waitFor()。这会阻止应用程序在执行一个 shell 命令后做任何事情。所以数据层没有问题。
我使用数据层 API 将命令从我的可穿戴设备发送到我的手持设备。直到今天下午,这一切都很好。我在我的代码中没有做任何更改,但突然只有手持应用程序重新启动后的第一个命令有效。以下所有命令均在可穿戴设备上发送,但不会在手持设备上接收。我用断点遍历了所有这些,并做了两次同样的事情,但只有第一次成功了。
可穿戴代码:
public void run() {
Task<List<Node>> nodeListTask = Wearable.getNodeClient(getApplicationContext()).getConnectedNodes();
try {
List<Node> nodes = Tasks.await(nodeListTask);
for (Node node : nodes) {
Task<Integer> sendMessageTask = Wearable.getMessageClient(MainActivity.this).sendMessage(node.getId(), "/wear_control", TextUtils.join(";", slices).getBytes());
Integer result = Tasks.await(sendMessageTask);
}
} catch (Exception exception) {
exception.printStackTrace();
//TODO aaaaaaaaaaaaaaaaaa
}
slices.clear();
}
来自手持设备的代码(在前台服务中):
@Override
public void onMessageReceived(MessageEvent messageEvent) {
if (messageEvent.getPath().equals("/wear_control")) {
ProcessMessage.evaluate(new String(messageEvent.getData()), this);
}
else {
super.onMessageReceived(messageEvent);
}
}
但正如我所说,我没有对代码进行任何更改,但它不再起作用了。
提前致谢。
经过一些调试,我发现我使用的 shell 代码有一个 process.waitFor()。这会阻止应用程序在执行一个 shell 命令后做任何事情。所以数据层没有问题。