Tom Hammond Tom Hammond - 2 months ago 26
Android Question

Android cannot resolve method requestLocationUpdates FusedLocationProviderAPI

I'm attempting to follow the Android Receiving Location Updates tutorial. The example code is here on Github.

Everything is working except for this line:

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);


It's throwing a
cannot resolve method requestLocationUpdates
error. I don't see anything in the documentation, but I'm pretty new to Android so might be missing something :).

Here's the full code. Any ideas where I'm going wrong? Thanks!

package location.test.example.com;

import android.app.Fragment;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;

import java.util.ArrayList;
import java.util.Date;

public class LocationFragment extends Fragment implements
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {

protected GoogleApiClient mGoogleApiClient;
protected Location mCurrentLocation;
protected LocationRequest mLocationRequest;
protected String mLastUpdateTime;

public static final long UPDATE_INTERVAL_IN_MILLISECONDS = 5000;

public static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS = UPDATE_INTERVAL_IN_MILLISECONDS / 5;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mLastUpdateTime = "";

buildGoogleApiClient();

if (NavUtils.getParentActivityName(getActivity()) != null) {
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
}
setHasOptionsMenu(true);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_location, container, false);

return v;
}

protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
createLocationRequest();
}

protected void createLocationRequest() {
mLocationRequest = new LocationRequest();

mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);

mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);

mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
startLocationUpdates();
}

protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}

@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
mLastUpdateTime = DateFormat.getDateFormat(getActivity()).format(new Date());
Toast.makeText(getActivity(), location.toString() + "", Toast.LENGTH_SHORT).show();
}

@Override
public void onConnected(Bundle connectionHint) {

}

@Override
public void onConnectionFailed(ConnectionResult result) {
Log.i("LocationFragment", "Connection failed: ConnectionResult.getErrorCode() " + result.getErrorCode());
}

@Override
public void onConnectionSuspended(int cause) {
Log.i("LocationFragment", "Connection suspended");
mGoogleApiClient.connect();
}

}

Answer

You have to use LocationListener for LocationServices.FusedLocationApi.requestLocationUpdates's locationListener

not

android.location.LocationListener

but

com.google.android.gms.location.LocationListener

Comments