Android:GPS从精细到粗糙的回退

Android:GPS从精细到粗糙的回退,android,gps,Android,Gps,您好 有人知道我如何在没有定位的情况下获得粗略的GPS坐标,在有定位的情况下获得精细的GPS坐标吗 我试着在谷歌上搜索一些示例代码,但没有结果 我确实发现: 但我不知道如何实现从粗略到精细的回退/升级 我希望有人能帮忙。提前感谢,您可以使用下面的代码获取最后知道的位置。它向后获取阵列上的位置提供程序和循环。i、 e从GPS开始,如果没有GPS,则获取网络位置。您可以在需要获取位置时调用此方法 private double[] getGPS() { LocationManager lm = (Lo

您好

有人知道我如何在没有定位的情况下获得粗略的GPS坐标,在有定位的情况下获得精细的GPS坐标吗

我试着在谷歌上搜索一些示例代码,但没有结果

我确实发现:

但我不知道如何实现从粗略到精细的回退/升级


我希望有人能帮忙。提前感谢,

您可以使用下面的代码获取最后知道的位置。它向后获取阵列上的位置提供程序和循环。i、 e从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;
}
private double[]getGPS(){
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
列表提供程序=lm.getProviders(true);
/*向后循环阵列,如果得到准确位置,则中断循环*/
位置l=空;
对于(int i=providers.size()-1;i>=0;i--){
l=lm.getLastKnownLocation(providers.get(i));
如果(l!=null)中断;
}
双精度[]gps=新双精度[2];
如果(l!=null){
gps[0]=l.getLatitude();
gps[1]=l.GetLength();
}
返回gps;
}

您可以在中找到关于该主题的精彩介绍。基本思想是,您可以监听来自不同提供商的更新。当接收到新位置时,将其与以前存储的位置进行比较(在上面的链接中提供了一个示例函数)


位置对象有一个
getaccurity
,可用于测量其精度。您还应该设置一个计时器,以便知道位置提供程序提供更新后经过了多长时间。如果在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;
}