【问题标题】:OnDataChanged is never calledOnDataChanged 永远不会被调用
【发布时间】:2016-05-17 05:53:30
【问题描述】:

我正在尝试数据项 APi,这是我的代码

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,但我仍然不清楚我应该改变什么来输入改变的数据

【问题讨论】:

    标签: android wear-os dataitem


    【解决方案1】:

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

    如果您使用的是 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 只有在数据实际更改时才会被调用。假设旧数据是 ("Person", "Bob") 并且你用相同的数据 ("Person", "Bob") 替换它,那么 onDataChanged 将不会被触发,因为数据实际上并没有改变。但是如果你把 ("Person", "Bob2") 改为 onDataChanged 就会被触发。

    【讨论】:

    • 谢谢。这对我有用!我不知道我是怎么错过的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2013-10-12
    • 2012-03-27
    • 2013-08-29
    • 2013-11-03
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多