lam*_*gol 10 android sync android-wear-data-api wear-os
我想在手持设备和可穿戴设备之间同步偏好.我在手持app上实现了示例代码.
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
Run Code Online (Sandbox Code Playgroud)
然后在可穿戴应用上实现以下代码.但无法检索已保存的计数.
PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
int count = dataMap.getDataMap().getInt("COUNT_KEY");
System.out.println(count);//print 0
Run Code Online (Sandbox Code Playgroud)
我试过在Android的实际Android手持设备和模拟器中穿.我确认他们是通过使用Android Wear应用程序的演示卡连接的.
我需要什么或者我误解了什么?
mat*_*ash 19
使用该代码,您尝试创建第二个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();
}
});
Run Code Online (Sandbox Code Playgroud)
我用过这个,它的确有效.但是,我自己遇到了问题,因为我不知道Uri要访问特定的数据项Wearable.DataApi.getDataItem().所以我发布了这个问题.如果你只是测试,那就DataApi.getDataItems()足够了.
另一种选择是用于DataApi.addListener()通知存储的更改.
| 归档时间: |
|
| 查看次数: |
8570 次 |
| 最近记录: |