【问题标题】:Cannot use LocationCallback class无法使用 LocationCallback 类
【发布时间】:2015-09-20 06:43:34
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java android android-location android-googleapiclient


    【解决方案1】:

    解决方案:

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

    【讨论】:

      【解决方案2】:

      如果您还没有完成,请尝试将 Google Play 服务添加到您的 gradle 文件中

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

      【讨论】:

      • 我将编译版本设置为7.5.0,但它给了我很多构建文件错误,我相信这是因为我的最低Api级别是16。我将编译版本重置为5.2.0 + 所有错误都消失了,但就像我说的,我想使用 LocationCall 回来,但是将编译版本设置为 7.5.0,会导致很多错误。我需要支持 API 16。有什么建议吗?
      • Google play 服务也兼容较低的 api,因此请尝试 7.5.0 或更高版本并使用最新的 android api
      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2021-04-13
      • 2018-11-25
      • 2020-10-11
      • 2016-12-03
      • 2019-05-23
      • 2016-04-30
      • 1970-01-01
      相关资源
      最近更新 更多