如何使用 Android Wear 的 DataItem

How to use DataItem of Android Wear(如何使用 Android Wear 的 DataItem)

本文介绍了如何使用 Android Wear 的 DataItem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在手持设备和可穿戴设备之间同步偏好.我在手持应用上实现了示例代码.

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.

这篇关于如何使用 Android Wear 的 DataItem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使用 Android Wear 的 DataItem

基础教程推荐