首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果GPS在不可用,Android会退回到ACCURACY_COARSE。

如果GPS在不可用,Android会退回到ACCURACY_COARSE。
EN

Stack Overflow用户
提问于 2012-12-15 09:53:57
回答 1查看 1K关注 0票数 0

我使用条件对象来获得最好的提供者,如下所示

代码语言:javascript
复制
final boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGpsEnabled) {
      Criteria crit = new Criteria();
      crit.setAccuracy(Criteria.ACCURACY_FINE);
      crit.setCostAllowed(true);
      crit.setPowerRequirement(Criteria.NO_REQUIREMENT);
      crit.setSpeedRequirement(false);
      String provider = locationManager.getBestProvider(criteria, true);
      locationManager.requestLocationUpdates(provider, 600000, 0, new myLocationListener());
}

在我的手机(Android 4.1)上,我已经启用了“使用GPS卫星”和“使用无线网络”选项。现在,当我在户外的时候,上面的代码非常有用,它给了我GPS的位置。

但是,当我在室内时,它不会恢复到“网络”提供商。它一直试图通过全球定位系统( GPS )定位,却永远得不到它的位置(我等了1分钟左右)。

当我将标准代码更改为使用Criteria.ACCURACY_COARSE时,它将使用“网络”提供程序。

我如何让它首先尝试全球定位系统(因为它是启用的)和因为我们是室内的,它将无法连接到一个卫星,然后回落到使用“网络”。我很难做到这一点。我再说一遍,GPS是启用的,但不能访问卫星,所以希望它能得到网络定位。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-21 07:10:35

解决方案是创建位置管理器并附加2个侦听器以接收更新。一个用于全球定位系统,另一个用于网络。您将其设置为相当快地接收更新(或者根据您自己的情况,我只需要获得位置),然后创建一个方法,比较GPS和Network的位置,并找出哪个更准确。你最多做3次,以获得平均哪一个是返回最准确的位置,然后你停止位置更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13891190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档