Как использовать DataItem из Android Wear
Я хочу синхронизировать предпочтения между карманными и носимыми устройствами. Я реализую пример кода на портативном приложении.
PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
dataMap.getDataMap().putInt(COUNT_KEY, count++);
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi
.putDataItem(mGoogleApiClient, request);
System.out.println(dataMap.getDataMap().getInt("COUNT_KEY"));//print 3
А затем внедрить приведенный ниже код в носимое приложение. Но сохраненный счет не может быть восстановлен.
PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
int count = dataMap.getDataMap().getInt("COUNT_KEY");
System.out.println(count);//print 0
Я попробовал в реальном Android портативное устройство и эмулятор износа Android. Я подтвердил, что они связаны с помощью демонстрационных карт приложения Android Wear.
Что мне нужно больше или я что-то неправильно понимаю?
1 ответ
С помощью этого кода вы пытаетесь создать второй запрос пут, не считывая ранее сохраненные данные. Вот почему это пусто.
Доступ к ранее сохраненным данным осуществляется с помощью DataApi
методы. Например, вы можете получить все сохраненные данные с помощью Wearable.DataApi.getDataItems()
:
PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient);
results.setResultCallback(new ResultCallback<DataItemBuffer>() {
@Override
public void onResult(DataItemBuffer dataItems) {
if (dataItems.getCount() != 0) {
DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItems.get(0));
// This should read the correct value.
int value = dataMapItem.getDataMap().getInt(COUNT_KEY);
}
dataItems.release();
}
});
Я использовал это, и это работает. Однако у меня возникла проблема, так как я не знаю Uri для доступа к конкретному элементу данных с Wearable.DataApi.getDataItem()
, Поэтому я разместил этот вопрос. Если вы просто тестируете, DataApi.getDataItems()
должно хватить.
Другой вариант заключается в использовании DataApi.addListener()
получать уведомления об изменениях в хранилище.