Android studio 未调用OnDataChanged

Android studio 未调用OnDataChanged,android-studio,google-data-api,android-wear-data-api,Android Studio,Google Data Api,Android Wear Data Api,我的手机和手机之间的通信有问题。我决定将磨损模块添加到我的应用程序中。Wear应用程序只有一个类(MainActivity) } 但是,不会调用WatchListener_服务中的onDataChanged方法。ResultCallbacks中的onResult方法打印“Succes”,这样看起来数据项发送正确 我已经在StackOverflow上发现了许多类似的问题,所以我检查了所有这些问题: 两个模块具有相同的applicationId 这两个模块都使用'com.google.android

我的手机和手机之间的通信有问题。我决定将磨损模块添加到我的应用程序中。Wear应用程序只有一个类(MainActivity)

}

但是,不会调用WatchListener_服务中的onDataChanged方法。ResultCallbacks中的onResult方法打印“Succes”,这样看起来数据项发送正确

我已经在StackOverflow上发现了许多类似的问题,所以我检查了所有这些问题:

  • 两个模块具有相同的applicationId
  • 这两个模块都使用'com.google.android.gms:play-services-wearable:9.0.0'
  • SetUrgent用于putDataRequest,因此不会有任何延迟
  • WearableListenerService已在清单中声明正确的意图筛选器:

    安卓操作:name=“com.google.android.gms.wearable.DATA\u已更改” 数据安卓:scheme=“wear”安卓:主机=“*”

  • 手机和Wear应用程序都在物理设备上运行。我的问题是。。。我应该如何解决此问题?
    谢谢

    检查两个应用程序是否具有相同的调试密钥。我在这方面遇到了一些问题,问题是两个应用程序(wear和mobile)的按键不同

    附言:Android Wear API太荒谬了。我放弃了Wear的开发,因为API并没有像他们说的那样正常工作,这是多么糟糕

    package cz.johrusk.myapplication;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.wearable.view.WatchViewStub;
    import android.util.Log;
    import android.widget.TextView;
    
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.common.api.ResultCallback;
    import com.google.android.gms.wearable.DataApi;
    import com.google.android.gms.wearable.DataEventBuffer;
    import com.google.android.gms.wearable.PutDataMapRequest;
    import com.google.android.gms.wearable.PutDataRequest;
    import com.google.android.gms.wearable.Wearable;
    
    
    public class MainActivity extends Activity implements GoogleApiClient.OnConnectionFailedListener,DataApi.DataListener {
    
    GoogleApiClient mGoogleApiClient;
    private TextView mTextView;
    static final String TAG = MainActivity.class.getSimpleName();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                mTextView = (TextView) stub.findViewById(R.id.text);
            }
        });
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                    @Override
                    public void onConnected(Bundle connectionHint) {
                        Log.d(TAG, "onConnected: " + connectionHint);
                        sendNumber(1);
                        Log.d(TAG,"BBBBBBBB");
                    }
                    @Override
                    public void onConnectionSuspended(int cause) {
                        Log.d(TAG, "onConnectionSuspended: " + cause);
                    }
                })
                .addOnConnectionFailedListener(this)
                .build();
        mGoogleApiClient.connect();
        Log.d(TAG,"mGoogleApiClient connected;");
    }
    
    
    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Log.d(TAG,"FAILE" + connectionResult);
    }
    public void sendNumber(int number) {
        PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/number");
    
        putDataMapRequest.getDataMap().putInt("number",number);
        putDataMapRequest.getDataMap().putLong("Time",System.currentTimeMillis());
        PutDataRequest putDataReq = putDataMapRequest.asPutDataRequest();
        putDataReq.setUrgent();
        Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq)
                .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                    @Override
                    public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                        if (!dataItemResult.getStatus().isSuccess()) {
                            Log.d(TAG,"Fail");
                        }
                        else{
                            Log.d(TAG,"Succes");
                        }
                    }
                });
    }
    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }
    @Override
    public void onDataChanged(DataEventBuffer dataEventBuffer) {
        Log.d(TAG,"TEST");
    }
    
    package cz.johrusk.showsmscode.service;
    
    
    import android.util.Log;
    
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.wearable.DataEvent;
    import com.google.android.gms.wearable.DataEventBuffer;
    import com.google.android.gms.wearable.DataMap;
    import com.google.android.gms.wearable.DataMapItem;
    import com.google.android.gms.wearable.Wearable;
    import com.google.android.gms.wearable.WearableListenerService;
    
    
     public class WatchListener_service extends WearableListenerService {
    @Override
    public void onCreate() {
        super.onCreate();
       GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .build();
        mGoogleApiClient.connect();
    }
    @Override
    public void onDataChanged(DataEventBuffer dataEventBuffer) {
        Log.d("prijato","number is: ");
    
        for (DataEvent dataEvent : dataEventBuffer) {
        if (dataEvent.getType() == DataEvent.TYPE_CHANGED) {
            DataMap dataMap = DataMapItem.fromDataItem(dataEvent.getDataItem()).getDataMap();
            String path = dataEvent.getDataItem().getUri().getPath();
            if (path.equals("/number")){
                int number = dataMap.getInt("numa");
                long time = dataMap.getInt("timestamp");
                Log.d("received","number is: " + number);
    
            }
        }
    }
    }