gpt4 book ai didi

android - 使用 PutDataMapRequest 后 Wearable.DataApi.getDataItem() 的 Uri 是什么?

转载 作者:可可西里 更新时间:2023-11-01 18:45:13 26 4
gpt4 key购买 nike

我正在测试 Wearable Data Layer Api,如 Android tutorial 中所述.

有一个基于 DataItem 的低级 API ,它只能有一个字节数组作为有效负载,因此训练建议使用 PutDataMapRequest ,在使用 Intents 时,它似乎基本上等同于 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"

并将此 Uri 与 DataApi.getDataItem() 一起使用会返回正确的结果。但是我对如何生成它一无所知,因为我只使用了/testdata部分来创建PutDataRequest...

还是我做错了?

最佳答案

uri 的权限(在您的帖子中描述为 )是 Node Id,可通过 Node API 获得。总之,您可以按如下方式构造 Uri。

private Uri getUriForDataItem() {
// If you've put data on the local node
String nodeId = getLocalNodeId();
// Or if you've put data on the remote node
// String nodeId = getRemoteNodeId();
// Or If you already know the node id
// String nodeId = "some_node_id";
return new Uri.Builder().scheme(PutDataRequest.WEAR_URI_SCHEME).authority(nodeId).path("/path_to_data").build();
}

private String getLocalNodeId() {
NodeApi.GetLocalNodeResult nodeResult = Wearable.NodeApi.getLocalNode(mGoogleApiClient).await();
return nodeResult.getNode().getId();
}

private String getRemoteNodeId() {
HashSet<String> results = new HashSet<String>();
NodeApi.GetConnectedNodesResult nodesResult =
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
List<Node> nodes = nodesResult.getNodes();
if (nodes.size() > 0) {
return nodes.get(0).getId();
}
return null;
}

关于android - 使用 PutDataMapRequest 后 Wearable.DataApi.getDataItem() 的 Uri 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com