public class GooglePlayServices implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private final String TAG = "GooglePlayServices:"; protected GoogleApiClient mGoogleApiClient; Context context; public GooglePlayServices( Context context) { this.context=context; // build the Play Services client object mGoogleApiClient = new GoogleApiClient.Builder(context) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart: Connecting to Google Play Services"); // Connect to Play Services GoogleApiAvailability gAPI = GoogleApiAvailability.getInstance(); int resultCode = gAPI.isGooglePlayServicesAvailable(this); if (resultCode != ConnectionResult.SUCCESS) { gAPI.getErrorDialog(this, resultCode, 1).show(); } else { mGoogleApiClient.connect(); } } @Override protected void onStop() { super.onStop(); if (mGoogleApiClient.isConnected()) { Log.i(TAG, "onStop: Disconnecting from Google Play Services"); mGoogleApiClient.disconnect(); } } /** * Google Play Services Lifecycle methods */ @Override public void onConnected(Bundle connectionHint) { Log.i(TAG, "onConnected: Is connected to Google Play Services"); //TODO: we connected } @Override public void onConnectionFailed(ConnectionResult result) { //error result Log.d(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode()); } @Override public void onConnectionSuspended(int cause) { Log.d(TAG, "Connection was suspended for some reason"); mGoogleApiClient.connect(); //reconnected } } //TODO: Add play services in Grade //compile 'com.google.android.gms:play-services:Version'