3

I want to override onLocationAvailability() from LocationCallback class (com.google.android.gms.location.LocationCallback).

According to this doc, LocationCallback is an abstract class.

So I tried extending it, but I can't, nothing shows up in Android Studio.

I tried to implement it, as per this answer, but android studio doesn't allow it either.

Does anyone know how I can use this class so I can use onLocationAvailability() ?

Community
  • 1
  • 1
rgv
  • 1,186
  • 1
  • 17
  • 39

2 Answers2

2

Solution:

 protected LocationCallback mLocationCallback = new LocationCallback() // Implementacja abstract class
{
    @Override
    public void onLocationAvailability(LocationAvailability locationAvailability) {
        super.onLocationAvailability(locationAvailability);  
        if(!locationAvailability.isLocationAvailable())
        {// No location available
            checkLocationSettings();
            Snackbar snackLocationUnavailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_unavailable, Snackbar.LENGTH_LONG);
            snackLocationUnavailable.show();
        }
        else
        {
            Snackbar snackLocationAvailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_available, Snackbar.LENGTH_LONG);
            snackLocationAvailable.show();
        }
}

//...

 LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationCallback, null).setResultCallback(new ResultCallback<Status>() {
                    @Override
                    public void onResult(@NonNull Status status) {
                        if (status.isSuccess()) { /** Udało się włączyć aktualizacje lokacji */
                            mRequestingLocationUpdates = true;

                        }
                        else {/** Nie udało się włączyć aktualizacji lokacji */
                            Snackbar.make(findViewById(R.id.myCoordinatorLayout), "Status Code: " + status.getStatusCode(), Snackbar.LENGTH_INDEFINITE).show();



                        }
                    }
                });

   private void stopLocationUpdates() {
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, mLocationCallback) // trzeba było castnąć bo jakieś jaja były z LocationCallback
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(@NonNull Status status) {
                    if(status.isSuccess()) { /** Udało się wyłączyć aktualizacje lokacji */
                        mRequestingLocationUpdates = false;
                    }
                    else {/** Nie udało się wyłączyć aktualizacji lokacji */
                        // mRequestingLocationUpdates = true; // ?!!?
                    }
                }
            });
Artur Ex
  • 43
  • 7
1

Try to add Google Play Services to your gradle file if you havn't done it

dependencies {
    compile 'com.google.android.gms:play-services:7.5.0'
}
df1e
  • 50
  • 1
  • 9
  • I set compile version to 7.5.0, but it gave me a lot of build file errors, I believe it is because I my min Api level is 16. I reset the compile version to 5.2.0+ and all the errors disappeared, but like I said, I want to use LocationCall back, but setting compile version to 7.5.0, causes a lot of errors. And I need to support API 16. Any suggestions? – rgv Jul 02 '15 at 17:42
  • 1
    Google play services are compatible for lower api's too so try version 7.5.0 or newer and use latest android api – df1e Jul 04 '15 at 07:33