无法使用LocationCallback类

时间:2015-07-02 16:11:13

标签: java android android-location android-googleapiclient

我想覆盖onLocationAvailability()班级LocationCallback中的(com.google.android.gms.location.LocationCallback)

根据this doc,LocationCallback是一个抽象类。

所以我尝试扩展它,但我不能,Android Studio中没有任何内容。

我尝试按照this回答实现它,但android studio也不允许它。

有谁知道如何使用此课程,以便我可以使用onLocationAvailability()

2 个答案:

答案 0 :(得分:2)

解决方案:

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

答案 1 :(得分:1)

如果您已完成此操作,请尝试将Google Play服务添加到您的gradle文件

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