2014-11-25 2 views
2

Я работаю над приложением для Android Wear, которое может начать работу с телефоном. Все отлично работает, но я не хочу полагаться на постоянно работающий фоновый сервис на телефоне, чтобы забрать это сообщение. В идеале, я бы запускал WearableListenerService одновременно с приложением и продолжал работать до onPause.Android Wear - получает сообщение от Wear without WearableListenerService?

Есть ли способ перехватить сообщение от Wear с помощью широковещательного приемника и фильтра намерений, а затем запустить приложение/услугу из приемника? Вот некоторые из кода:

Чтобы отправить сообщение на телефон:

private void sendMessage(String path, byte[] data) { 
    if (mNode != null && mGoogleApiClient!=null && mGoogleApiClient.isConnected()) { 
     Wearable.MessageApi.sendMessage(
       mGoogleApiClient, mNode.getId(), path, data).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()); 
          Toast info = Toast.makeText(WearActivity.this, "Failed to send message, status code: " + sendMessageResult.getStatus().getStatusCode(), Toast.LENGTH_SHORT); 
          info.show(); 
         } 
        } 
       } 
     ); 
    } 
} 

На приемном конце, у меня есть WearableListenerService, который получает сообщение. (Обратите внимание, как телефон и мобильные имеют классы WearableListenerService так общение 2-полосная

+0

Примечание: 'WearableListenerService' does ** не ** работает постоянно - он запускается только при отправке нового сообщения/соединения узла/изменения уровня данных. – ianhanniballake

ответ

1

Пер с Sending an Syncing data training:.

WearableListenerService (услуг)

Расширение WearableListenerService позволяет слушать важные данные в системе выполняется управление жизненным циклом службы WearableListenerService, связываясь с сервисом, когда ему нужно отправлять элементы данных или сообщения и ** отменить службу, если нет необходимости в работе. *

DataListener (для деятельности на переднем плане)

Реализация DataListener в деятельности позволяет прослушивать для важных событий слоя данных, когда активность находится на переднем плане. Использование этого вместо WearableListenerService позволяет прослушивать изменения только тогда, когда пользователь активно использует ваше приложение.

Если вы хотите только получать сообщения, когда деятельность открыта (игнорируя любые сообщения, отправленные, когда она закрыта), вы можете добавить MessageApi.MessageListener к вашей деятельности.

Если вы хотите получать сообщения, открыто ли ваше приложение или нет (гарантируя, что вы не бросайте сообщения, отправленные из носимых), то вы должны использовать WearableListenerService (примечание: WearableListenerService делает не постоянно работает - это запускается только тогда, когда новое сообщение/соединение узла/изменение уровня данных отправляются и останавливаются, когда сообщений больше нет).

+0

Пожалуйста, проверьте мой вопрос о том, что WearableListenerService липкий и не липкий: http://stackoverflow.com/questions/34491510/wearablelistenerservice-sticky-vs-not-sticky –

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