1

The below code am using to get current location from another fragment. But am getting an error in log as Google "Google api client parameter is required in android". This is crashing my App, so do anybody knew whats the exact issue is and how to resolve it...

public class GPSTracker extends Activity implements LocationListener, ConnectionCallbacks, OnConnectionFailedListener
     {

private final Context mContext;
protected LocationManager locationManager;  
boolean canGetLocation = false;

private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 1000;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0; // 10 meters

// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 20; // 1 minute

Location location; // location
double latitude; // latitude
double longitude; // longitude

SharedData gpsSharedData;
public GoogleApiClient mGoogleApiClient;
private Location mLastLocation;

public GPSTracker(Context context) {
    this.mContext = context;
    getLocation();
}

/**
 * Method to verify google play services on the device
 * */
public boolean checkPlayServices() {
    int resultCode = GooglePlayServicesUtil
            .isGooglePlayServicesAvailable(mContext);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode,
                    GPSTracker.this, PLAY_SERVICES_RESOLUTION_REQUEST)
                    .show();
        } else {
            Toast.makeText(getApplicationContext(),
                    "This device is not supported.", Toast.LENGTH_LONG)
                    .show();
            finish();
        }
        return false;
    }
    return true;
}

// Creating google api client object
public synchronized void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API).build();
}

public void getLocation() {
    // TODO Auto-generated method stub
    mLastLocation = LocationServices.FusedLocationApi
            .getLastLocation(mGoogleApiClient);

    if (mLastLocation != null) {
        latitude = mLastLocation.getLatitude();
        longitude = mLastLocation.getLongitude();

    } else {
        System.out
                .println("(Couldn't get the location. Make sure location is enabled on the device)");
    }
}

public void stopUsingGPS() {
    if (locationManager != null) {
        locationManager.removeUpdates(GPSTracker.this);
    }
}

/**
 * Function to get latitude
 * */
public double getLatitude() {
    if (location != null) {
        latitude = location.getLatitude();
    }

    // return latitude
    return latitude;
}

public double getLongitude() {
    if (location != null) {
        longitude = location.getLongitude();
    }

    // return longitude
    return longitude;
}

public boolean canGetLocation() {
    return this.canGetLocation;
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub


}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onConnected(Bundle arg0) {
    // TODO Auto-generated method stub
    // Once connected with google api, get the location
    getLocation();
}



@Override
public void onConnectionSuspended(int arg0) {
    // TODO Auto-generated method stub
    mGoogleApiClient.connect();
}

@Override
public void onConnectionFailed(ConnectionResult arg0) {

    System.out
            .println("Connection failed: ConnectionResult.getErrorCode() = "
                    + arg0.getErrorCode());
}

}

Munchoo
  • 313
  • 1
  • 7
  • 22

1 Answers1

4

Please call buildGoogleApiClient(); in first line of getLocation(), you have not init mGoogleApiClient variable.

Satty
  • 1,352
  • 1
  • 12
  • 16