android - 使用 DataMap 发送和接收数据 - Android 可穿戴设备

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

我正在开发一个 Android 可穿戴设备项目,我正在尝试将数据从移动设备发送到可穿戴设备模拟器。我正在尝试在可穿戴设备中记录接收到的数据,但它没有记录。

这些是我到目前为止所做的。

1) 打开Android Wear 应用,让Emulator 状态为“connected”

2) 连接我的移动设备

3) 运行 adb -d forward tcp:5601 tcp:5601 连接移动设备和模拟器

4) 实现 GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,我的移动设备中发送类中的 LocationListener,并在 onCreate 中构建客户端:

    googleClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

5) 在我的移动设备中,使用完美记录的“weatherDescription”创建一个数据项,我可以在其中使用 DataApi 通过 putDataItem 发送到可穿戴设备:

这是 weatherDescription: I/weatherDescription: scattered clouds 的日志

            putDataMapReq = PutDataMapRequest.create("/data");
            Log.i("weatherDescription", weatherDescription);
            putDataMapReq.getDataMap().putString("weatherDescription", weatherDescription);

            PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
            Wearable.DataApi.putDataItem(googleClient, putDataReq); 

5) 实现 GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,我的可穿戴设备中的接收类(我的自定义表盘类)中的 LocationListener 和 onCreate 中的构建客户端:

    googleClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

6) 在可穿戴设备的 onConnect 中设置监听器:

@Override
public void onConnected(Bundle bundle) {

    Wearable.DataApi.addListener(mGoogleApiClient, this).setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
            Log.i("myTag", String.valueOf(status));
        }
    });
}

看起来它在接收/可穿戴端连接正确:

我/我的标签:状态{statusCode=SUCCESS, resolution=null}

7)在onDataChanged中,记录接收到的信息:

    public void onDataChanged(DataEventBuffer dataEventBuffer) {
        Log.i("myTag", "in on Data Changed");
        for (DataEvent event : dataEventBuffer){
            if(event.getType() == DataEvent.TYPE_CHANGED){
                DataItem item = event.getDataItem();

                if(item.getUri().getPath().compareTo("/data") == 0 ){
                    DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap();

                    dataMap.getString("weatherDescription");

                    Log.i("myTag", dataMap.getString("weatherDescription"));
                }
            }
        }
    }

最佳答案

听起来你的 dataMap 没有改变它的值,那么它就不会向可穿戴设备发送数据。

您可以发送 Long.toString(System.currentTimeMillis()) 来验证它是否每次都更改。

关于android - 使用 DataMap 发送和接收数据 - Android 可穿戴设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35708949/

相关文章:

android - 访问 Activity 中的 Spinner 而无需在 Layout 中定义

android - 如何以编程方式更改表盘

android - Android 可穿戴设备上加速度计和陀螺仪数据的连续感知

android - 使用静态库创建 PhoneGap 插件

android - 如何获取android中当前位置的邮政编码或区号?

Android Wear 通过 WiFi TCP/IP 启用 ADB 连接

java - Android手持设备和Wear通信不一致

android - 我们需要用什么来代替 Android 中的 wear api?

java - 将图像添加到 sqlite 数据库

android - 从 Android Wear 心率传感器读取底层颜色/光数据?