我想同步手持设备和可穿戴设备之间的偏好.我在手持应用上实现了
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()
通知存储的更改.