我想在手持设备和可穿戴设备之间同步偏好.我在手持应用上实现了示例代码.
I want to sync preference between handhelds and wearables. I implement sample code on handheld app.
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
然后在可穿戴应用上实现以下代码.但无法检索已保存的计数.
And then implement below code on wearable app. But saved count can't be retrieved.
PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
int count = dataMap.getDataMap().getInt("COUNT_KEY");
System.out.println(count);//print 0
我在实际的安卓手持设备和安卓穿戴模拟器上进行了尝试.我通过 Android Wear 应用的演示卡确认它们已连接.
I tried in actual android handheld device and emulator of Android wear. I confirmed they are connected by using demo cards of Android Wear app.
我还需要什么或者我误解了什么?
What I need more or do I misunderstand something?
推荐答案
使用该代码,您正在尝试创建 第二个 put 请求,而不是读取之前存储的数据.这就是为什么它是空的.
With that code, you are trying to create a second put request, not reading the previously stored data. That's why it's empty.
访问以前存储的数据的方法是使用 DataApi
方法. 例如,您可以使用 Wearable.DataApi.getDataItems()
获取所有存储的数据:
The way to access previously stored data is with the DataApi
methods. For example, you can get all stored data with 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();
}
});
我用过这个,它可以工作.但是,我自己也遇到了问题,因为我不知道使用 Wearable.DataApi.getDataItem()
访问 特定 数据项的 Uri.所以我发布了这个问题.如果您只是在测试,DataApi.getDataItems()
应该就足够了.
I've used this and it works. However, I'm having a problem myself, as I don't know the Uri to access a specific data item with Wearable.DataApi.getDataItem()
. So I posted this question. If you're just testing though, DataApi.getDataItems()
should suffice.
另一种选择是使用 DataApi.addListener()
收到更改通知到存储.
Another option is to use DataApi.addListener()
to be notified of changes to the storage.
相关推荐
最新文章