获取Android设备位置最可靠的方法是什么?

时间:2016-04-09 20:12:29

标签: android gps location android-location

我现在使用的方法非常不可靠。 在我的Android设备(不是模拟器)中,返回的位置大多数时间都是null。虽然有时它确实有效。

 public Location getLocation(String provider) {
    if (locationManager.isProviderEnabled(provider)) {
        locationManager.requestLocationUpdates(provider,
                MIN_TIME_FOR_UPDATE, MIN_DISTANCE_FOR_UPDATE, this);
        if (locationManager != null) {
            location = locationManager.getLastKnownLocation(provider);
            return location;
        }
    }
    return null;
}

我知道在引入API 23之后,我需要处理其他权限。 有可靠的方法来获取位置吗?

2 个答案:

答案 0 :(得分:0)

相信我,最可靠的获取位置的方法是依赖于'onLocationChanged'方法,因为调用 getLastKnownLocation 方法并不意味着你得到一个新的位置或不是null结果。您可以阅读下面的documentation

  

这可以在不启动提供程序的情况下完成。请注意这一点   位置可能已过期,例如,如果设备已启用   关闭并搬到另一个地方。

     

如果当前禁用了提供程序,则返回 null

最后一件事我想注意到你,调用 requestLocationUpdates 方法并不意味着它会尽快给你提供位置。所以这就是为什么我提到你'onLocationChanged'的回调方法。

答案 1 :(得分:0)

查看与位置相关的github上的Google示例:

https://github.com/googlesamples/android-play-location

如何获取最后的已知位置,位置更新等等