OnResult () in Awareness.SnapshotApi.getLocation does NOT receive a call from a service

I am trying to find a location from the Service background. The problem is that the onResult() function inside Awareness.SnapshotApi.getLocation(mGoogleApiClient).setResultCallback(new ResultCallback<LocationResult>() NOT called. What could be wrong here?

The onConnected() and onConnectionSuspended() functions are also not called, but when I type mGoogleApiClient.isConnected() = true , it returns.

So, I am trying to understand why onConnected() does not call 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) { } } 
+5
source share
1 answer

new GoogleApiClient.Builder(context) second parameter is the callback listener, and you skipped this.

I mean: new GoogleApiClient.Builder(context, this)

+1
source

Source: https://habr.com/ru/post/1258507/


All Articles