OnDataChanged从未被称为

问题描述:

我尝试了DataItem的AP i和这里是我的代码OnDataChanged从未被称为

mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
       @Override 
       public void onConnected(Bundle connectionHint) { 
        Log.d("Inside", "onConnected: " + connectionHint); 
        Toast.makeText(getApplicationContext(),"Inside On connected",Toast.LENGTH_SHORT).show(); 
        // Now you can use the Data Layer API 
        //Creating Dataitem 
        PutDataMapRequest dataMapRequest = PutDataMapRequest.create("/count"); 
        dataMapRequest.setUrgent(); 
        DataMap datamap=dataMapRequest.getDataMap(); 
        PutDataRequest putDataRequest=dataMapRequest.asPutDataRequest(); 
        datamap.putString("key", "Value"); 
        PendingResult<DataApi.DataItemResult> pendingResult = 
          Wearable.DataApi.putDataItem(mGoogleApiClient, putDataRequest); 
       } 
       @Override 
       public void onConnectionSuspended(int cause) { 
        Log.d("Inside", "onConnectionSuspended: " + cause); 
       } 
      }) 
      .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(ConnectionResult result) { 
        Log.d("Inside", "onConnectionFailed: " + result); 
       } 
      }) 
      // Request access only to the Wearable API 
      .addApiIfAvailable(Wearable.API) 
      .build(); 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onDataChanged(DataEventBuffer dataEventBuffer) { 
    Log.d("Inside","onDataChanged"); 
} 

我错过了在数据上触发改变?我读thisthis,但我仍然不清楚我应该改变什么来改变数据输入

如果您使用的是DataApi.DataListener,那么您必须在GoogleApiClient连接后添加监听器。例如:您的GoogleApiClient.ConnectionCallbacks中的Wearable.DataApi.addListener(mGoogleApiClient, this)

如果您正在使用WearableListenerService请确保您有类似的代码在接收您的AndroidManifest.xml /监听方,如下图所示:

<service android:name=".YourCustomWearableListenerService"> 
    <intent-filter> 
     <action android:name="com.google.android.gms.wearable.DATA_CHANGED"/> 
      <data android:scheme="wear" 
        android:host="*" 
        <!-- I believe pathPrefix is optional, removing it will make the service listener to all data change events --> 
        android:pathPrefix="/YourDataMapPathPrefix"/> 
     </intent-filter> 
</service> 

而且记住,onDataChanged将得到调用只有当数据实际上已经改变。让我们说,旧数据是(“人”,“鲍勃”),你用相同的数据(“人”,“鲍勃”)替换它,然后onDataChanged不会被触发,因为数据实际上没有改变。但是onDataChanged会被触发,如果你把(“人”,“Bob2”),而不是。

+1

谢谢。这对我有用!我不知道我是如何错过它的。 – UndoTheUndo