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

获取android设备位置最可靠的方法是什么?,android,gps,location,android-location,Android,Gps,Location,Android Location,我现在使用的方法非常不可靠。 在我的Android设备(不是模拟器)中,大多数时候返回的位置都是空的。尽管有时它确实可以工作 public Location getLocation(String provider) { if (locationManager.isProviderEnabled(provider)) { locationManager.requestLocationUpdates(provider, MIN_TIME_FO

我现在使用的方法非常不可靠。 在我的Android设备(不是模拟器)中,大多数时候返回的位置都是空的。尽管有时它确实可以工作

 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之后,我还需要处理其他权限。
是否有可靠的方法获取位置

相信我,获取位置最可靠的方法是依赖于“onLocationChanged”方法,因为调用getLastKnownLocation方法并不意味着获得新位置或非空结果。你可以阅读下面的内容

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

如果提供程序当前已禁用,将返回null


我最不想注意的是,调用requestLocationUpdates方法并不意味着它将尽快为您提供位置信息。这就是我提到“onLocationChanged”回调方法的原因

在github上签出与位置相关的google示例:

如何获取上次已知位置、位置更新等