【问题标题】:GetLastLocation always returns nullGetLastLocation 始终返回 null
【发布时间】:2015-08-15 11:37:42
【问题描述】:

按照here 的解释,我尝试访问片段中的最后一个已知位置

在我的 onCreate 中:

public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

在我的简历中:

@Override
public void onResume() {
    super.onResume();
    mGoogleApiClient.connect();
}

Fragment 实现 GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener

并且 on Connected 被调用!!

@Override
public void onConnected(Bundle bundle) {
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
    if (mLastLocation != null) {
    }
}

并且 mLastLocation 始终为空。每次我尝试调用 GetLastLocation() 时,它都会返回 null。

知道为什么吗?

【问题讨论】:

  • getLastLocation() 很容易返回 null。它也不会请求新的位置,所以即使你得到一个位置,它也可能很旧,并且不能反映当前位置。最好注册一个监听器,即使您在收到第一个 onLocationChanged() 回调后取消注册也是如此。看看这个答案中的代码,它是注册位置监听器的一个非常精简和基本的实现:stackoverflow.com/questions/30191047/…

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


【解决方案1】:

我从未尝试过这种方法,我通常创建一个实现LocationsSourceLocationListenerLocationProvider。这是一个可以帮助您使用这种方法的示例: How to get My Location changed event with Google Maps android API v2?

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 2013-07-27
    • 1970-01-01
    • 2016-05-31
    • 2012-03-18
    • 2016-11-04
    • 2016-07-28
    • 2010-11-08
    相关资源
    最近更新 更多