我正在测试Android 教程中描述的Wearable Data Layer Api。
有一个基于的低级API DataItem
,它只能有一个字节数组作为payload,所以培训推荐使用,在使用Intents时PutDataMapRequest
似乎基本等价于一个(即可序列化的map)。Bundle
您基本上创建了此类的一个实例,然后填充值并发送它。
private final static String DATA_PATH = "/testdata";
PutDataMapRequest dataMap = PutDataMapRequest.create(DATA_PATH);
dataMap.getDataMap().putInt(...);
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, request);
pendingResult.setResultCallback(...);
现在,我想检查这些数据是否存储正确(为了测试,在手持设备本身上,我现在不关心可穿戴设备)。适当的方法在DataApi
类中,所以我可以调用:
PendingResult<DataApi.DataItemResult> pending;
pending = Wearable.DataApi.getDataItem(mGoogleApiClient, uri);
pending.setResultCallback(...);
然后DataMapItem.fromDataItem()
在回调内部使用来获取值。
问题是:请求 DataItemResult 的实际 Uri 是什么?
数据被存储,因为如果我Wearable.DataApi.getDataItems(mGoogleApiClient)
用来遍历所有存储的数据,它确实在那里,并且 Uri 是:
"wear://<some guid here>/testdata"
并使用此 UriDataApi.getDataItem()
返回正确的结果。但我对如何生成它一无所知,因为我只使用该/testdata
部分来创建PutDataRequest
...
还是我做错了?