从Android Wear向掌上电脑发送和接收资产时遇到问题



我正试图将资产从Android穿戴设备发送到手持设备,但在设置DataRequest或检索时遇到了问题。我不确定错误的确切位置。

这是我在穿戴设备上的"发送到数据层"代码:

PutDataMapRequest request = PutDataMapRequest.create("/audio");
request.getDataMap().putAll(data); //data is a DataMap with a timestamp asset, and an audio asset called "audioAsset"
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleClient, request.asPutDataRequest().setUrgent());
pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() { ... }

这就是我将DataMap放入请求并发送它的方式,并且我已经检查了数据映射是否包含正确的资产和数据。

在手持设备上,当调用onDataChanged时,我会这样做:

@Override
public void onDataChanged(DataEventBuffer dataEvents) {
    DataMap dataMapReceived;
    for (DataEvent event : dataEvents) {
        if (event.getType() == DataEvent.TYPE_CHANGED &&
                event.getDataItem().getUri().getPath().equals("/audio")) {
            dataMapReceived = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
            Asset audioAsset = dataMapReceived.getAsset("audioAsset");
            Log.d("H_AUDIO", "Audio Bytes Length: " + audioAsset.getData().length); // Crashes here with null pointer
        }

当我尝试访问"audioAsset.getData().length"时,程序崩溃,出现空指针异常,因此我可能没有以正确的方式检索资产。有人能告诉我这件事是不是走错了路吗?谢谢

为了传输这样的二进制数据,建议使用Asset或ChannelApi。我建议您查看文档,看看您心目中的任务更喜欢什么技术。此外,您可能更容易使用将许多api封装在易于使用的界面中的库,如WearCompanionLibrary。

相关内容

  • 没有找到相关文章