【问题标题】:Android Wear Data Layer API working only one timeAndroid Wear 数据层 API 只工作一次
【发布时间】:2020-03-09 23:05:05
【问题描述】:

我使用数据层 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);
        }
    }

但正如我所说,我没有对代码进行任何更改,但它不再起作用了。

提前致谢。

【问题讨论】:

  • 您发送的数据在第一次(成功)之后是否发生变化?
  • 是的,第一次是例如1;3 和第二次 2;0。但是我也试了两次同样的数据,第二次就不行了。
  • 如果数据没有改变,Data API 不会发送,这就是我问的原因。只是在测试时需要注意的事情;除此之外,我没有给你解决方案,对不起!

标签: android wear-os android-wear-data-api


【解决方案1】:

经过一些调试,我发现我使用的 shell 代码有一个 process.waitFor()。这会阻止应用程序在执行一个 shell 命令后执行任何操作。所以数据层没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多