wear-os - 获取已从手持设备发送到佩戴的数据

标签 wear-os android-wear-data-api

我已从手机发送数据至穿戴设备

    private static final String IMAGE_PATH = "/image";
    private static final String IMAGE_TITLE = "imageTitle";
    private static final String IMAGE_TO_SEND = "image";


    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(IMAGE_PATH);
    putDataMapRequest.getDataMap().putString(IMAGE_TITLE, "hi this handheld");
    PutDataRequest putDataRequest = putDataMapRequest.asPutDataRequest();
    putDataRequest.setUrgent();
    Wearable.DataApi.putDataItem(googleApiClient, putDataRequest).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
            if (dataItemResult.getStatus().isSuccess()) {

            } else {

            }
        }
    });

在磨损方面,我想首先检查数据是否已经发送。如果数据已经发送,那么我想使用该数据,否则我想请求移动数据:

我已经做到了,但总是失败。我的代码如下:

 Wearable.NodeApi.getLocalNode(googleApiClient).setResultCallback(new ResultCallback<NodeApi.GetLocalNodeResult>() {
            @Override
            public void onResult(@NonNull NodeApi.GetLocalNodeResult getLocalNodeResult) {
                Uri uri = new Uri.Builder()
                        .scheme(PutDataRequest.WEAR_URI_SCHEME)
                        .path(IMAGE_PATH)
                        .authority(getLocalNodeResult.getNode().getId())
                        .build();

                Wearable.DataApi.getDataItem(googleApiClient, uri).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                    @Override
                    public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                        if (dataItemResult.getStatus().isSuccess() && dataItemResult.getDataItem() != null) {
                            Log.d(TAG, "onResult: success result");
                            DataMap dataMap = DataMap.fromByteArray(dataItemResult.getDataItem().getData());

                        } else {

                        }
                    }
                });
            }
        });

最佳答案

我找到了解决方案。我通过获取本地节点id来检查数据,以便它提供空数据。本地节点id即我的 watch 的id,节点id必须是使用数据层API发送数据的节点的id。就我而言,首先我的手持设备通过 Data Layer Api 发送数据。我的 watch 检查数据是否存在。如果找到数据则获取数据,否则向手持设备发送请求。

Wearable.NodeApi.getConnectedNodes(googleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
                @Override
                public void onResult(NodeApi.GetConnectedNodesResult nodes) {
                    for (Node node : nodes.getNodes()) {
                        connectedNode = node;
                    }

                    Uri uri = new Uri.Builder()
                            .scheme(PutDataRequest.WEAR_URI_SCHEME)
                            .path(IMAGE_PATH)
                            .authority(connectedNode.getId()) //id which has sent data
                            .build();

                    Wearable.DataApi.getDataItem(googleApiClient, uri).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                        @Override
                        public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                            if (dataItemResult.getStatus().isSuccess() && dataItemResult.getDataItem() != null) {
                                Log.d(TAG, "onResult: successfully got previous data");
                            } else {
                                makeRequestToSendData();
                                Log.d(TAG, "onResult: failed to got previous data");//request handheld to get data using **Message API**
                            }
                        }
                    });

                }
            });

我们必须将 getLocalNode 更改为 getConnectedNodes

关于wear-os - 获取已从手持设备发送到佩戴的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059833/

相关文章:

android - 可穿戴设备未安装应用程序(Android Wear 功能标准)

android - 如何在 Android Wear 中为 2D Pickers 添加页面点?

android - 如何在没有任何签名的情况下使用已处理的应用程序运行 Wear 应用程序?我的意思是开发者 Debug模式

java - 在android wear中创建后台服务

Android Wear MessageAPI - 无法在 UI 线程上发送消息

java - 在 WEAR OS 上启动 map 需要 WRITE_SETTINGS 权限

android-studio - 在 Android Studio 中,构建一个 Android Wear 项目,如何在两个模块中包含相同的文件

Android Wear Proguard

android - Android Wear API 的 GoogleApiClient 失败需要更新,但我已经更新了

wear-os - 基于 Android Wear 的智能 watch 上的手腕手势检测 : is it possible?