Это код, основанный на событиях
Wearable.DataApi.addListener(googleApiClient, new DataApi.DataListener() {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
Log.i(tag, "on data changed " + dataEvents.toString());
for (DataEvent event : dataEvents) {
DataItem item = event.getDataItem();
String path = item.getUri().getPath();
if (path.equals(PATH_MAP)) {
DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap();
String dataValue = dataMap.getString(KEY_DATA);
}
}
}
}).setResultCallback(new ResultCallbacks<Status>() {
@Override
public void onSuccess(@NonNull Status status) {
Log.i(tag, "success");
}
@Override
public void onFailure(@NonNull Status status) {
Log.i(tag, "failure");
}
});
Как прочитать dataValue
, связанный с KEY_DATA
, без использования шаблона слушателя? Мне это нужно, потому что иногда узлы не синхронизируются, даже если установлен срочный режим. В частности, обратный вызов onDataChanged вызывается только в случае изменения значений.
Это сценарий: установлен мобильный apk, при запуске пишет значение в KEY_DATA
элементе. После установки носимого apk я установил прослушиватель для получения этого значения, но событие изменения данных не вызывается, поэтому мне нужен способ получить текущее значение с помощью явного опроса.
Я знаю, что есть MessageApi, но проблема та же, если устройство не в сети, сообщение теряется.