Я тестирую Wearable Data Layer Api, как описано в учебнике Android.
Существует низкоуровневый API, основанный на DataItem
, который может содержать только байтовый массив как полезную нагрузку, поэтому обучение рекомендует использовать PutDataMapRequest
, который, по-видимому, в основном эквивалентен Bundle
(т.е. сериализуемой карте) при использовании Intents. Вы в основном создаете экземпляр этого класса, затем заполняете значения и отправляете их.
private final static String DATA_PATH = "/testdata";
PutDataMapRequest dataMap = PutDataMapRequest.create(DATA_PATH);
dataMap.getDataMap().putInt(...);
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, request);
pendingResult.setResultCallback(...);
Теперь я хочу проверить, правильно ли были сохранены эти данные (для тестирования на самом КПК я не беспокоюсь о пригодности для носки прямо сейчас). Соответствующие методы для этого относятся к классу DataApi
, поэтому я могу вызвать:
PendingResult<DataApi.DataItemResult> pending;
pending = Wearable.DataApi.getDataItem(mGoogleApiClient, uri);
pending.setResultCallback(...);
а затем используйте DataMapItem.fromDataItem()
внутри обратного вызова, чтобы получить значение.
Проблема заключается в следующем: каков фактический Uri для запроса DataItemResult?
Данные сохраняются, потому что, если я использую Wearable.DataApi.getDataItems(mGoogleApiClient)
для перебора всех сохраненных данных, это действительно так, и Uri:
"wear://<some guid here>/testdata"
И использование этого Uri с DataApi.getDataItem()
возвращает правильный результат. Но я не знаю, как сгенерировать, так как я использовал только часть /testdata
для создания PutDataRequest
...
Или я делаю что-то неправильно?