私のウェアラブルには があり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 アイテムが表示されるのはなぜですか?