2015-05-27 2 views
1

У меня есть устройство для переноски, с которого данные отправляются на карманное устройство, обернутое в объект DataMap. На портативном устройстве я реализовал услугу слушателя, который расширяет WearableListenerService реализовано таким образом:Отправлять данные и ждать ответов с помощью API Wearable Data Layer

public class ListenerService extends WearableListenerService { 
    private static final String TAG = ListenerService.class.toString(); 

    private static final String WEARABLE_DATA_PATH = "/wearable_data"; 

    @Override 
    public void onDataChanged(DataEventBuffer dataEvents) { 
     DataMap dataMap; 

     for (DataEvent event : dataEvents) { 
      if (event.getType() == DataEvent.TYPE_CHANGED) { 
       String path = event.getDataItem().getUri().getPath(); 

       if (path.equals(WEARABLE_DATA_PATH)) { 
        dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); 

        messageReceived(dataMap); 
       } 
      } 
     } 
    } 

    private void messageReceived(DataMap dataMap) { 
     Log.v(TAG, "DataMap received on handheld device: " + dataMap); 
    } 
} 

передачи от носимого к ручной работе безупречно. Тем не менее, мне нужно будет отправить обратно с карманного устройства на носки ответ, например, «ok done» или «error xxx». Как я могу это сделать?

ответ

2

все работает так же. Вам нужен подкласс WearableListenerService на вашем носимом приложении, объявленном на вашем AndroidManifest.xml, с действием com.google.android.gms.wearable.BIND_LISTENER. Когда портативный компьютер готов отправить сообщение на Wearable, вы можете использовать либо DataApi, либо MessageApi, и соответствующий обратный вызов будет вызываться на другой конечной точке.

+0

Именно этого я и боялся. Нет ли другого более удобного решения? Мне кажется странным управлять «простыми» ответами таким образом ... – Dev

+0

вы можете отправить другое уведомление на носимое, если вы уже обрабатываете локальные оповещения с обоих концов, но я бы выглядел действительно странным. Img – Blackbelt

+2

Сообщение асинхронное что означает, что нет простого подтверждения того, что вы отправляете на носимые. Ответ Блэббелта - это ИМО правильный. –