Android 从不调用WearableSensorListener onDataChanged

Android 从不调用WearableSensorListener onDataChanged,android,wear-os,android-wear-notification,Android,Wear Os,Android Wear Notification,我最近开始在安卓设备上工作,我想从安卓手表上收集传感器数据 我成功地使用了消息API,但数据API对我不起作用。我查过: 但是没有一个为我工作 我的值班代码: @Override public void onCreate() { super.onCreate(); // sensor registration // ...... googleApiClient = new GoogleApiClient.Builder(this) .add

我最近开始在安卓设备上工作,我想从安卓手表上收集传感器数据

我成功地使用了消息API,但数据API对我不起作用。我查过:

但是没有一个为我工作

我的值班代码:

@Override
public void onCreate() {
    super.onCreate();
    // sensor registration
    // ......
    googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    googleApiClient.connect();
    Log.i(this.getClass().toString(), "Google API Client connected");
}

private void sendSensorResult(SensorEvent event) {
    if (!googleApiClient.isConnected())
        googleApiClient.connect();

    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(DATA_API_PATH);

    putDataMapRequest.getDataMap().putLong("UNIX_TIME", System.currentTimeMillis());
    putDataMapRequest.getDataMap().putInt("TYPE", event.sensor.getType());
    // nanosecond
    putDataMapRequest.getDataMap().putLong("TIME", event.timestamp);
    putDataMapRequest.getDataMap().putFloatArray("DATA", event.values);

    PutDataRequest request = putDataMapRequest.asPutDataRequest().setUrgent();
    Wearable.DataApi.putDataItem(googleApiClient, request)
            .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                    if (dataItemResult.getStatus().isSuccess()) {
                        Log.i(this.getClass().toString(), "Sent: " + event.toString());
                    } else {
                        Log.i(this.getClass().toString(), "FAILED TO SEND: " + event.toString());
                    }
                }
            });
}
电话AndroidManifest.xml:

我可以从手表上看到日志,但手机上什么也没显示

可穿戴设备和手机的应用ID相同

我需要任何额外的权限才能使用数据API吗?

尽可能早地使用GooglePlayServices版本

打开 .\Sdk\extras\google\m2repository\com\google\android\gms\play可穿戴服务\ 和使用,例如8.3.0。看看你的wear设备的GooglePlayServices版本。它的数量必须大于您使用的数量

我认为您的实现不正确。这是错误的

private void sendSensorResult(SensorEvent event) {
    if (!googleApiClient.isConnected())
        googleApiClient.connect();
///....
Wearable.DataApi.putDataItem(googleApiClient, request)

我的意思是你必须等待连接。因此,只有在连接回调后才使用putDataItem。

我的手表和手机都使用Google Play Services 10.2.98。将其更改回10.0.1或8.3.0会导致应用程序无法启动。@Frederick Zhang,您可以用8.3.0发布您的失败日志吗。电话:。手表:只是显示不幸的是,HelloWear已经停止了,没有任何日志。你能上传文件吗@FrederickZhang@FrederickZhang,似乎您已经不正确地实现了这个lib版本。尝试清理/构建项目,以更清楚地描述问题:
<service
        android:name=".WearableSensorListener"
        android:enabled="true"
        android:exported="true">
    <intent-filter>
        <action android:name="com.google.android.gms.wearable.DATA_CHANGED"/>
        <data android:host="*"
              android:scheme="wear"
              android:pathPrefix="/wearable-sensor"/>
    </intent-filter>
</service>
private void sendSensorResult(SensorEvent event) {
    if (!googleApiClient.isConnected())
        googleApiClient.connect();
///....
Wearable.DataApi.putDataItem(googleApiClient, request)