onResult() в Awareness.SnapshotApi.getLocation НЕ вызывается из службы

Я пытаюсь получить местоположение из фона Service, Проблема в том, что onResult() функция внутри Awareness.SnapshotApi.getLocation(mGoogleApiClient).setResultCallback(new ResultCallback<LocationResult>() НЕ звонят. Что здесь может быть не так?

Функции onConnected() а также onConnectionSuspended() также не звонят, но когда я распечатаю mGoogleApiClient.isConnected() = true возвращается

Поэтому я пытаюсь понять, почему onConnected() тоже не звонят.

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) {

}
}

1 ответ

new GoogleApiClient.Builder(context) вторым параметром является прослушиватель обратного вызова, и вы пропустили это.

Я имею в виду: new GoogleApiClient.Builder(context, this)

Другие вопросы по тегам