2015-02-18 3 views
1

Я пытаюсь отправить сообщение или лучше сообщение на мобильный телефон, пока оно не отключено.Отправка сообщения отсоединенному мобильному от носимого

Вот код, я использую:

Wearable.MessageApi.sendMessage(
     mGoogleApiClient, node, event, message).setResultCallback(
     new ResultCallback<MessageApi.SendMessageResult>() { 
      @Override 
      public void onResult(MessageApi.SendMessageResult sendMessageResult) { 
       if(!sendMessageResult.getStatus().isSuccess()) { 
        Log.e(TAG, "Failed to send message with status code: " 
          + sendMessageResult.getStatus().getStatusCode()); 
       } 
      } 
     } 
); 

Узел ID кэшируется когда onPeerConnected(Node peer) называется, так что я не нужно запрашивать узел API, чтобы получить пустой список. Однако я отправляю данные на узел, который находится в автономном режиме. Это приводит к статусу StatusCode 4000, который равен TARGET_NODE_NOT_CONNECTED. Конечно, я знаю это, но каков наилучший способ кэшировать это событие, чтобы отправить его как можно скорее?

+0

Почему бы вам просто не использовать DataApi? Службы Google Play будут выполнять «кеширование» для вас. В противном случае вам нужно реализовать его самостоятельно, и лучший способ зависит от ваших потребностей. Вам нужно сохранить это событие в постоянном хранилище или как переменную? Позже все, что вам нужно сделать, - это повторно отправить это событие после подключения узла снова. Хотя подумайте об использовании DataApi, вам кажется, что это более подходящий выбор. –

+0

Я бы написал файл, таким образом, я не потеряю данные даже после перезагрузки устройства. – TheLittleNaruto

ответ

0

Я закончил эту идею, о которой в комментариях указывал Мацей Киминьга. Я использую DataAPI для хранения и отправки моих событий. После того, как событие было получено мобильным устройством, я удаляю путь из слоя данных, так как он выполнил свою работу.

Вы должны иметь в виду, что удаление снова вызовет метод onDataChanged. Таким образом, вы должны проверить тип DataEvent:

event.getType() == DataEvent.TYPE_DELETED 

Если вы не держите это в виду, вы можете получить петлю бесконечности.

Смежные вопросы