我现在使用的方法非常不可靠。 在我的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之后,我需要处理其他权限。 有可靠的方法来获取位置吗?
答案 0 :(得分:0)
相信我,最可靠的获取位置的方法是依赖于'onLocationChanged'方法,因为调用 getLastKnownLocation 方法并不意味着你得到一个新的位置或不是null结果。您可以阅读下面的documentation。
这可以在不启动提供程序的情况下完成。请注意这一点 位置可能已过期,例如,如果设备已启用 关闭并搬到另一个地方。
如果当前禁用了提供程序,则返回 null 。
最后一件事我想注意到你,调用 requestLocationUpdates 方法并不意味着它会尽快给你提供位置。所以这就是为什么我提到你'onLocationChanged'的回调方法。
答案 1 :(得分:0)