I am trying to get location from a background Service
. The problem is that the onResult()
function inside the Awareness.SnapshotApi.getLocation(mGoogleApiClient).setResultCallback(new ResultCallback<LocationResult>()
is NOT getting called. What could be wrong here?
The functions onConnected()
and onConnectionSuspended()
also are not getting called but when I print out mGoogleApiClient.isConnected() = true
is returned.
So I am trying to understand why onConnected()
is not getting called either.
public class BlockingService extends Service implements GoogleApiClient.ConnectionCallbacks {
private GoogleApiClient mGoogleApiClient;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
initAwarenessAPI();
amIClosetoLocation(<LatLng I get from my database>);
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onDestroy();
}
private void initAwarenessAPI() {
Context context = getApplicationContext();
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Awareness.API)
.build();
mGoogleApiClient.connect();
}
private Boolean amIClosetoLocation(final LatLng savedLoc) {
final String TAG = "Awareness";
mLog.printToLog(className + Constants.funcStart + MethodName.methodName() + ": Entered Function");
amIClosetoLocation = false;
if (ContextCompat.checkSelfPermission(
getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
mLog.printToLog(className + MethodName.methodName() + ": ***DONT HAVE LOCATION PERMISSION***");
} else {
mLog.printToLog(className + MethodName.methodName()
+ ": Permission Exists -- so now going to get location");
Awareness.SnapshotApi.getLocation(mGoogleApiClient)
.setResultCallback(new ResultCallback<LocationResult>() {
@Override
public void onResult(@NonNull LocationResult locationResult) {
//THIS FUNCTION IS NOT GETTING CALLED
if (!locationResult.getStatus().isSuccess()) {
Log.e(TAG, "Could not get location.");
mLog.printToLog(className + MethodName.methodName() + ": Could NOT get location");
return false;
} else {
mLog.printToLog(className + MethodName.methodName()
+ ": Success: Able to send location");
}
Location currLocation = locationResult.getLocation();
mLog.printToLog(className + MethodName.methodName()
+ ": Success, Received location = " + currLocation.toString());
mLog.printToLog(className + Constants.funcStart + MethodName.methodName() +
": Got Location = Lat: " +
currLocation.getLatitude() +
", Lon: " + currLocation.getLongitude());
}
});
}
mLog.printToLog(className + Constants.funcEnd + MethodName.methodName()
+ ": Exiting Function, returning amIClosetoLocation = " + amIClosetoLocation);
return amIClosetoLocation;
}
@Override
public void onConnected(@Nullable Bundle bundle) {
mLog.printToLog(className + Constants.funcStart + MethodName.methodName() + ": Entered Function");
@Override
public void onConnectionSuspended(int i) {
}
}
new GoogleApiClient.Builder(context)
second parameter is the callback listener and you missed that.
I mean: new GoogleApiClient.Builder(context, this)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With