问候,
当我没有修复时,有没有人知道如何获得粗略的GPS坐标,并在我修复时获得精确的GPS坐标?
我尝试使用谷歌搜索一些示例代码无济于事。
但我不知道如何实现回退到粗略/升级到精细。
我希望有人可以提供帮助。提前谢谢,
答案 0 :(得分:3)
您可以在documentation中找到对该主题的精彩介绍。基本思想是您启用侦听来自不同提供商的更新。收到新位置后,将其与之前存储的位置进行比较(上述链接中提供了一个示例函数)。
位置对象有一个getAccuracy
,可用于衡量其准确性。您还应该设置一个计时器,以便了解位置提供程序提供更新后经过的时间。如果GPS提供商给您更新后超过两分钟,则开始侦听网络更新。在收听网络更新时,如果GPS为您提供了新的更新,请切换到正确的位置。
答案 1 :(得分:2)
您可以使用以下代码获取最后知道的位置。它获取位置提供程序并向后循环数组。即从GPS开始,如果没有GPS则获得网络位置。您可以在需要获取位置时调用此方法。
private double[] getGPS() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = lm.getProviders(true);
/* Loop over the array backwards, and if you get an accurate location, then break out the loop*/
Location l = null;
for (int i=providers.size()-1; i>=0; i--) {
l = lm.getLastKnownLocation(providers.get(i));
if (l != null) break;
}
double[] gps = new double[2];
if (l != null) {
gps[0] = l.getLatitude();
gps[1] = l.getLongitude();
}
return gps;
}