Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:GCM和谷歌API客户端_Android_Google Cloud Messaging_Wear Os_Google Api Client - Fatal编程技术网

Android:GCM和谷歌API客户端

Android:GCM和谷歌API客户端,android,google-cloud-messaging,wear-os,google-api-client,Android,Google Cloud Messaging,Wear Os,Google Api Client,我正在测试Google云消息,我想将数据发送到smartwatch,以便在smartwatch应用程序上打开包含数据的通知 所以,我有一个GcmListenerService来处理来自GCM的消息(它正在工作) 现在,我想知道如何实现GoogleAPI客户端 我是这样做的,但它不起作用: public class GcmMessageHandler extends GcmListenerService { private static final String TAG = "GcmMessag

我正在测试Google云消息,我想将数据发送到smartwatch,以便在smartwatch应用程序上打开包含数据的通知

所以,我有一个GcmListenerService来处理来自GCM的消息(它正在工作)

现在,我想知道如何实现GoogleAPI客户端

我是这样做的,但它不起作用:

public class GcmMessageHandler extends GcmListenerService {

private static final String TAG = "GcmMessageHandler";

private GoogleApiClient mGoogleApiClient;

public static final int MESSAGE_NOTIFICATION_ID = 435345;

public void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle connectionHint) {
                    Log.d(TAG, "onConnected: " + connectionHint);
                    sendNotif();
                }

                @Override
                public void onConnectionSuspended(int cause) {
                    Log.d(TAG, "onConnectionSuspended: " + cause);
                }
            })
            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult result) {
                    Log.d(TAG, "onConnectionFailed: " + result);
                }
            })
            .addApi(Wearable.API)
            .build();
}

public void sendNotif () {
    if (mGoogleApiClient.isConnected()) {
        PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/new_meeting");
        putDataMapRequest.getDataMap().putString("title", "title");
        putDataMapRequest.getDataMap().putString("content", "content");
        PutDataRequest request = putDataMapRequest.asPutDataRequest();
        Wearable.DataApi.putDataItem(mGoogleApiClient, request)
                .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                    @Override
                    public void onResult(DataApi.DataItemResult dataItemResult) {
                        if (!dataItemResult.getStatus().isSuccess()) {
                            Log.e(TAG, "buildWatchOnlyNotification(): Failed to set the data, "
                                    + "status: " + dataItemResult.getStatus().getStatusCode());
                        } else {
                            Log.e(TAG, dataItemResult.getStatus().getStatusMessage());
                        }
                    }
                });

    } else {
        Log.e(TAG, "buildWearableOnlyNotification(): no Google API Client connection");
    }
}

@Override
public void onMessageReceived(String from, Bundle data) {

    String message = data.getString("message");

    this.buildGoogleApiClient();
    this.mGoogleApiClient.connect();


}

}
public void buildGoogleApiClient() {

    Context context = getBaseContext();

    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle connectionHint) {
                    Log.d(TAG, "onConnected: " + connectionHint);
                    sendNotif();
                }

                @Override
                public void onConnectionSuspended(int cause) {
                    Log.d(TAG, "onConnectionSuspended: " + cause);
                }
            })
            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult result) {
                    Log.d(TAG, "onConnectionFailed: " + result);
                }
            })
            .addApi(Wearable.API)
            .build();
}

我在我的侦听器中更改了它,它正在工作:

public class GcmMessageHandler extends GcmListenerService {

private static final String TAG = "GcmMessageHandler";

private GoogleApiClient mGoogleApiClient;

public static final int MESSAGE_NOTIFICATION_ID = 435345;

public void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle connectionHint) {
                    Log.d(TAG, "onConnected: " + connectionHint);
                    sendNotif();
                }

                @Override
                public void onConnectionSuspended(int cause) {
                    Log.d(TAG, "onConnectionSuspended: " + cause);
                }
            })
            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult result) {
                    Log.d(TAG, "onConnectionFailed: " + result);
                }
            })
            .addApi(Wearable.API)
            .build();
}

public void sendNotif () {
    if (mGoogleApiClient.isConnected()) {
        PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/new_meeting");
        putDataMapRequest.getDataMap().putString("title", "title");
        putDataMapRequest.getDataMap().putString("content", "content");
        PutDataRequest request = putDataMapRequest.asPutDataRequest();
        Wearable.DataApi.putDataItem(mGoogleApiClient, request)
                .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                    @Override
                    public void onResult(DataApi.DataItemResult dataItemResult) {
                        if (!dataItemResult.getStatus().isSuccess()) {
                            Log.e(TAG, "buildWatchOnlyNotification(): Failed to set the data, "
                                    + "status: " + dataItemResult.getStatus().getStatusCode());
                        } else {
                            Log.e(TAG, dataItemResult.getStatus().getStatusMessage());
                        }
                    }
                });

    } else {
        Log.e(TAG, "buildWearableOnlyNotification(): no Google API Client connection");
    }
}

@Override
public void onMessageReceived(String from, Bundle data) {

    String message = data.getString("message");

    this.buildGoogleApiClient();
    this.mGoogleApiClient.connect();


}

}
public void buildGoogleApiClient() {

    Context context = getBaseContext();

    mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                @Override
                public void onConnected(Bundle connectionHint) {
                    Log.d(TAG, "onConnected: " + connectionHint);
                    sendNotif();
                }

                @Override
                public void onConnectionSuspended(int cause) {
                    Log.d(TAG, "onConnectionSuspended: " + cause);
                }
            })
            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult result) {
                    Log.d(TAG, "onConnectionFailed: " + result);
                }
            })
            .addApi(Wearable.API)
            .build();
}

此侦听器位于移动设备端,而不是smartwatch