I've been working on this for quite some time. I've tried everything I can think of.
I'm trying to get a rough location (Coarse location). First try was the following:
googleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, 0 /* clientId */, this)
.addApi(Places.GEO_DATA_API)
.addApi(LocationServices.API)
.build();
googleApiClient.connect();
And then this:
@Override
public void onConnected(Bundle bundle)
{
lastKnownLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
if(lastKnownLocation == null)
{
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
else
{
moveMap();
}
}
This returns null. Totally possible, no worries. However, after this, I tried to request location updates using LocationRequest, as follows:
locationRequest = new LocationRequest();
locationRequest.setInterval(10000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
And then this:
@Override
public void onLocationChanged(Location location)
{
lastKnownLocation = location;
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
moveMap();
}
Both of these methods don't give me any sort of a location. That's possible as well, so I downloaded a Fake GPS app, set Location Mode to GPS Only in phone settings, and set a fake location.
When I run my app after doing this, it still fails to find a location. I've also tried with:
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
Nothing seems to work. Permissions are in the manifest. What am I doing wrong?
Fixed it by doing the following:
Removed this:
Added this:
And moved the connect() call to onStart().
I assume the problem was the absence of addConnectionCallbacks.