首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android GPS定位精度问题

Android GPS定位精度问题
EN

Stack Overflow用户
提问于 2017-02-21 07:56:01
回答 2查看 18K关注 0票数 34

我正在用android开发gps跟踪应用程序。下面是我的代码架构:

  1. BackgroundSyncService:用于获取位置更新的服务类。这里初始化GoogleApiClient并实现其他与位置相关的方法。
  2. AppRunCheckerReceiver:一个BroadcastReceiver类,它将检查我的BackgroundSyncService是否在一个时间间隔内运行。如果它停止了,它就开始了。
  3. GpsEnableReceiver:如果BroadcastReceiver状态改变,它会触发一个BroadcastReceiver。它将检查我的BackgroundSyncService是否在一个时间间隔内运行。如果它停止了,它就开始了。
  4. InternetConnectionStateReceiver:当互联网状态改变时,它会触发一个BroadcastReceiver。它将检查我的BackgroundSyncService是否在一个时间间隔内运行。如果它停止了,那么它就开始了。

在我的BackgroundSyncService服务中,我使用以下方式初始化GoogleApiClient:

代码语言:javascript
复制
public void setLocationLocationRequest() {

        try {
            googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this).addApi(com.google.android.gms.location.LocationServices.API).build();

            locationRequest = new LocationRequest();
            locationRequest.setInterval(3000);
            locationRequest.setFastestInterval(3000);
            locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            googleApiClient.connect();
        } catch (Exception e) {

    }

这里精确的是LocationRequest.PRIORITY_HIGH_ACCURACY,间隔是

代码语言:javascript
复制
locationRequest.setInterval(3000)

这里是GoogleApiClient实现代码。

应用GPS信息剖面包含纬度、经度和精度参数

我的发现: in onLocationChanged(Location location)方法我用这样的方式检查定位对象的准确性:location.getAccuracy()。在这里,如果精度小于50米,那么我接受它。

在85%的案例中,它就像一种魅力。它让我从全球定位系统准确定位。但在15%的情况下,我的定位不准确,比如超过300米.

15%的设备是低成本中国品牌手机。

我的问题:

  1. 如何使准确度水平接近99%。我的代码体系结构有什么问题吗?
  2. 全球定位系统的精度取决于设备配置吗?如果是,那么我能为低配置设备做些什么?
  3. 优步、Go等共乘应用程序是如何适用于所有设备的?他们是否只有GPS的额外编码?
  4. 我的申请是孟加拉国的。在这里,互联网是缓慢的。它对GPS的精度有负面影响吗?

谢谢你的这条线。同时也为糟糕的英语感到遗憾。

EN

回答 2

Stack Overflow用户

发布于 2017-03-01 21:34:54

  1. 如何使准确度水平接近99%。我的代码体系结构有什么问题吗?

这是现实生活的场景。您无法确保所有的位置提供程序都能按预期工作。你应该要求最好的职位。

  1. ( a)全球定位系统的精度是否取决于设备配置?

是。有些设备可能有较老的GPS芯片组,只能跟踪GPS信号(美国),因为还有其他定位系统,如伽利略(欧洲)、GLONASS (俄罗斯)、QZSS (日本)和北斗(中国)。芯片组对这些类型的支持越多,就越有可能跟踪更多的卫星。另外,TTFF (时间第一次修复)取决于gps接收机有多少通道。

( b)如果是,我能为低配置设备做些什么?

因为这是一个硬件问题,所以您不能在这里做任何事情。但其他定位源可以弥补GPS数据的不足,如AGPS (辅助gps)、wifi和蜂窝定位。此外,还有一些付费选项,它提供了一个数据库来使用wifi访问点和cellids来定位您的设备(它们声称它们提供了最好的wifi解决方案,但我不确定因为我不使用它。您可以查看它,http://combain.com)。Wifi和赛利德还取决于周围有多少个无线接入点和蜂窝塔,以及它们的距离(信号强度)。如果您需要50米的精度,蜂窝定位没有什么可做的,但是wifi有机会接近这个值。

2009年的一些研究结果

  • 3G iPhone w/ A~8米
  • 3G iPhone w/ wifi ~ 74米
  • 3G iPhone w/蜂窝定位~ 600米

  1. 优步、Go等共乘应用程序是如何适用于所有设备的?他们是否只有GPS的额外编码?

他们可能有特定的定位策略,但它将基于在GPS中断期间使用其他来源。

  1. 我的申请是孟加拉国的。在这里,互联网是缓慢的。它对GPS的精度有负面影响吗?

其他答案则声称互联网与全球定位系统无关。是的,这是真的,它不是与全球定位系统有关,而是位置。AGPS利用互联网获取3种类型的数据(卫星信号、历书和星历),帮助GPS提供更快的位置定位。如果星历和历书过时了,或者设备从以前的定位位置移动了几百公里,那么它就被称为冷启动,在没有AGPS的情况下大约需要12到15分钟。

融合位置提供商已经知道如何提供这些配置的最佳解决方案,所以您应该祝福它。

参考文献:

票数 7
EN

Stack Overflow用户

发布于 2017-02-24 06:33:07

第一,(和第二)

  1. 如何使准确度水平接近99%。我的代码体系结构有什么问题吗?
  2. 全球定位系统的精度取决于设备配置吗?如果是,那么我能为低配置设备做些什么?

设备配置和代码体系结构在这里都很重要。如果您已经在85%的成功率,代码架构是好的,我认为。

就全球定位系统而言,在设备配置和精度方面,视线是一个重要因素。虽然低成本的手机可以返回一个准确的位置,一个清晰的视线。您可以尝试多运行两个周期/等待获得更高的精度。

在最坏的情况下,为了它的价值,您也可以尝试使用LocationManager和GPS提供商技术检索位置,这种技术作为15%的后盾,只是为了比较和确保您使用的位置是最准确的。区位策略说它是

在大多数情况下,通过使用,您将获得更好的电池性能和更适当的准确性。

  1. 优步、Go等共乘应用程序是如何适用于所有设备的?他们是否只有GPS的额外编码? 它们确实可以工作,但并不总是对应用程序中接收到的位置具有最高的准确性。如果我们开发人员有任何位置问题,我们需要找到他们,也许是第5页的google搜索结果:),或者从开源环境中获益。对我来说,最佳实践和android回购链接就足够了。您已经跟踪了像接收位置更新这样的帖子
  2. 我的申请是孟加拉国的。在这里,互联网是缓慢的。它对GPS的精度有负面影响吗? 互联网与LocationManager + 提供者的关系
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42361598

复制
相关文章

相似问题

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