Android Wear Data Layer API работает только один раз - PullRequest
0 голосов
/ 10 марта 2020

Я использую 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 Ответ

0 голосов
/ 05 апреля 2020

После некоторой отладки я обнаружил, что в используемом мной шелл-коде есть process.waitFor (). Это не позволяло приложению делать что-либо подобное после выполнения одной команды оболочки. Так что ничего плохого в уровне данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...