如何使用Android Wear的DataItem

前端之家收集整理的这篇文章主要介绍了如何使用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相关文章