无法使用 LocationCallback class

Cannot use LocationCallback class

我想从 LocationCallback class (com.google.android.gms.location.LocationCallback) 覆盖 onLocationAvailability()

根据 this 文档,LocationCallback 是一个摘要 class。

所以我尝试扩展它,但我做不到,Android Studio 中什么也没有显示。

我尝试按照 this 的回答实现它,但是 android 工作室也不允许。

有人知道我如何使用这个 class 以便我可以使用 onLocationAvailability() 吗?

尝试将 Google Play 服务添加到您的 gradle 文件中(如果您还没有这样做的话)

dependencies {
    compile 'com.google.android.gms:play-services:7.5.0'
}

解决方案:

 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; // ?!!?
                    }
                }
            });