我有一个简单的Android Wear演示来演示Message API。我正在捕获手表上的输入并将其传递到手持设备进行云处理,因此扩展WearableListenerService的以下类正在手机上运行:
public class ListenerService extends WearableListenerService {
private static final String MESSAGE_PATH = "/handle-inbound-message";
@Override
public void onMessageReceived(MessageEvent messageEvent) {
super.onMessageReceived(messageEvent);
if(messageEvent.getPath().equals(MESSAGE_PATH)) {
updateData(new String(messageEvent.getData()));
}
}
private void updateData(final String volume) {
new Thread(new Runnable() {
@Override
public void run() {
// do neat stuff with the inbound data
}
}).start();
}
}
...通过点击可穿戴应用上的按钮生成消息的可穿戴代码就像这样:
private void sendToHandheld(final byte[] volume) {
if(nodeId != null) {
new Thread(new Runnable() {
@Override
public void run() {
client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
Wearable.MessageApi.sendMessage(client, nodeId, MESSAGE_PATH, volume);
client.disconnect();
}
}).start();
}
}
代码工作正常......除了我必须在可穿戴应用中点击两次按钮才能触发onMessageReceived()。该应用程序启动,但第一次没有收到消息...应用程序仍然打开,我再次单击该按钮,它完全启动。任何人都可以看到我可能犯了什么错误吗?
(另外,我看到很多代码演示了人们不会调用super.onMessageReceived()的回购。)
答案 0 :(得分:0)
好吧,我想我已经解决了这个问题 - 我在onMessageReceived()
中注释掉了调用超类的行......并修复了它。
SUCCESS!