如何使用Android Wear的DataItem

我想同步手持设备和可穿戴设备之间的偏好.我在手持应用上实现了 sample code.
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应用程序的演示卡确认他们已连接.

我需要更多的东西,还是我误解的东西?

解决方法

使用该代码,您正在尝试创建第二个put请求,而不是读取以前存储的数据.这就是为什么它是空的.

使用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()访问特定的数据项.所以我发布了this question.如果你只是测试,DataApi.getDataItems()应该足够了.

另一种选择是使用DataApi.addListener()通知存储的更改.

相关文章

Android 通过adb shell命令查看内存,CPU,启动时间,电量等...
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客...
Android 常见adb命令 by:授客 QQ:1033553122 1、 查看所有已...
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...