无法从Android Wear向掌上电脑发送和接收资产

时间:2015-12-29 17:53:13

标签: android google-api wear-os

我尝试将资产从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
        }

当我尝试访问&#39; audioAsset.getData()。length&#39;时,程序崩溃时出现空指针异常,因此我可能无法以正确的方式检索资产。任何人都可以告诉我,我是否采取了错误的方式?感谢。

1 个答案:

答案 0 :(得分:0)

为了传输这样的二进制数据,建议使用AssetChannelApi。我建议您查看文档,了解哪些技术是您首选的任务。此外,您可以更轻松地在易于使用的界面中使用包含大量api的库,例如WearCompanionLibrary