我正在测试可穿戴数据层 API如中所述安卓教程 http://developer.android.com/training/wearables/data-layer/index.html.
有一个基于底层 APIDataItem http://developer.android.com/reference/com/google/android/gms/wearable/DataItem.html,它只能有一个字节数组作为有效负载,因此训练建议使用PutDataMapRequest http://developer.android.com/reference/com/google/android/gms/wearable/PutDataMapRequest.html,这似乎基本上相当于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) http://developer.android.com/reference/com/google/android/gms/wearable/DataApi.html#getDataItems%28com.google.android.gms.common.api.GoogleApiClient%29迭代all存储的数据,它确实在那里,Uri 是:
"wear://<some guid here>/testdata"
并使用这个 UriDataApi.getDataItem()
返回正确的结果。但我不知道如何generate它,因为我只使用了/testdata
部分来创建PutDataRequest
...
或者我做事不正确?