【问题标题】:How to check when LocationServices.FusedLocationApi.getLastLocation() is not null?如何检查 LocationServices.FusedLocationApi.getLastLocation() 何时不为空?
【发布时间】:2016-06-16 16:19:28
【问题描述】:

我首先使用 Android LocationServices.SettingsApi 检查位置是否打开,如果不是,我使用Android documentation example 显示标准位置设置对话框。稍后,如果用户启用位置,我使用 LocationServices.FusedLocationApi.getLastLocation() 来获取当前位置。如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ENABLE_LOCATION_REQUEST_CODE) {
        switch (resultCode) {
            case Activity.RESULT_OK:
                Location location = LocationServices.FusedLocationApi
                                       .getLastLocation(mGoogleApiClient);
                while (location == null) {
                    location = LocationServices.FusedLocationApi
                        .getLastLocation(mGoogleApiClient);
                }
                break;
            case Activity.RESULT_CANCELED:
                Toast.makeText(this, "Location not enabled!", Toast.LENGTH_LONG).show();
                break;
            default:
                break;
        }
    }
}

LocationServices.FusedLocationApi .getLastLocation() 在启用位置后,我的设备需要大约 1 秒才能返回非空值。问题是我使用 while 语句直到 LocationServices.FusedLocationApi .getLastLocation() 返回非空值。我认为我在 UI Thread 中这样做的方式是不对的。也许我可以在后台线程中做到这一点,但我想知道有一些更好的原生方式。

【问题讨论】:

    标签: android google-play-services android-location


    【解决方案1】:

    您可以在此链接中找到答案 :: 已解决

    LocationClient getLastLocation() return null

    【讨论】:

    • 你在说什么“融合位置不会在棒棒糖前工作”......真的:)..请检查它不是答案......
    【解决方案2】:

    你可以使用Handler.postDelayed()而不是使用后台线程

    if(location==null){
        new android.os.Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
            }
        }, 2000);//your waiting time.. I prefer 2 secs
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2020-08-10
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-10-12
      相关资源
      最近更新 更多