私のウェアラブルには がありActivity、implements DataApi.DataListenerこれは要求されたデータを更新するためにハンドヘルドにActivityメッセージを送信します。onConnected()ハンドヘルドがこのメッセージを受信すると、サーバーからデータを取得し、DataMap. これDataMapは、次のコードで送信されます。
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
for(Node node : nodes.getNodes()) {
PutDataMapRequest dataRequest = PutDataMapRequest.create(mPath);
dataRequest.getDataMap().putDataMapArrayList("/path", mData);
PutDataRequest request = dataMapRequest.asPutDataRequest();
DataApi.DataItemResult result = Wearable.DataApi.putDataItem(mGoogleApiClient, request).await();
if(result.getStatus().isSuccess()) {
Log.d(TAG, "DataMap: " + mData + " sent to: " + node.getDisplayName());
}
}
logcat: に出力されるため、このコードは正しく機能しているようです"DataMap: <mData> sent to: 7f7fbd33"。次に、ハンドヘルドウェアラブルはAsyncTask、次のコードを使用してこのデータを受信します。
NodeApi.GetLocalNodeResult localNode =
Wearable.NodeApi.getLocalNode(getGoogleApiClient()).await();
Uri dataUri = new Uri.Builder().scheme(PutDataRequest.WEAR_URI_SCHEME)
.authority(localNode.getNode().getId()).path("/path").build();
Log.d(dataUri.toString());
DataApi.DataItemResult itemResult =
Wearable.DataApi.getDataItem(mGoogleApiClient, dataUri).await();
Log.d(TAG, itemResult.getStatus() + " dataItem=" + dataItem.getDataItem();
if(itemResult.getStatus().isSuccess() && itemResult.getDataItem() != null) {
...
}
パスは正しいように見えます: wear://7f7fbd33/path、しかし結果は: になりますStatus{statusCode=SUCCESS, resolution=null} dataItem=null。null アイテムが表示されるのはなぜですか?