我在android上的gps跟踪应用程序工作.这里是我的代码架构:
1.BackgroundSyncService:用于获取位置更新的服务类,这里初始化GoogleApiClient,实现其他与位置相关的方法。
1.AppRunPackerReceiver:BroadcastReceiver类,用于检查我的BackgroundSyncService
在某个时间间隔内是否运行,如果停止则启动。
1.GpsEnableReceiver:一个BroadcastReceiver,当GPS状态改变时会触发。它会检查我的BackgroundSyncService
在一个时间间隔内是否在运行。如果它停止了,那么它会启动。
1.InternetConnectionStateReceiver:BroadcastReceiver,当网络状态发生变化时会触发,会在一定时间间隔内检查我的BackgroundSyncService
是否在运行,如果停止则启动。
在我的BackgroundSyncService
服务中,我使用以下方式初始化GoogleApiClient:
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
,间隔是
locationRequest.setInterval(3000)
型
here是GoogleApiClient实现代码。
This应用程序GPS信息部分包含纬度经度和精度参数
**我的发现:**在onLocationChanged(Location location)
方法中,我以这种方式检查位置对象的精度:location.getAccuracy()
。如果精度小于50米,那么我接受它。
在85%的情况下,它就像一个魅力。它从GPS发送给我准确的位置。但在15%的情况下,它发送给我不准确的位置,如更多>300米。
15%的设备是低成本的中国品牌移动的。
我的问题:
1.我怎样才能使准确率接近99%。我的代码架构有问题吗?
- GPS的准确性是否取决于设备配置?如果是,那么我可以为低配置设备做些什么?
1.如何优步,去JEK等.乘车共享应用程序适用于所有设备?他们有额外的编码为GPS只?
1.我申请的是孟加拉国。这里的互联网很慢。这对GPS精度有负面影响吗?
提前感谢这条线索。也为糟糕的英语道歉。
2条答案
按热度按时间ifmq2ha21#
1.我怎样才能使准确率接近99%。我的代码架构有问题吗?
这是真实的生活场景。你不能确保所有的位置提供商将按预期工作。你应该要求最好的可用位置。
是的。有些设备可能有旧的GPS芯片组,只能跟踪GPS信号(美国),因为有其他定位系统,如伽利略(欧洲),GLONASS(俄罗斯),QZSS(日本)和北斗(中国)。芯片组支持这些类型越多,你就有更多的机会跟踪更多的卫星,从而定位。TTFF(首次定位时间)取决于GPS接收器有多少通道。
B)如果是,那么我可以为低配置设备做些什么?
由于这是一个硬件问题,你不能做任何事情在这里。但其他位置来源可以弥补缺乏GPS数据,如AGPS(辅助GPS),wifi和Hive定位。也有一些付费选项,提供了一个数据库来定位您的设备使用wifi接入点和cellids(他们声称他们提供最好的wifi解决方案,但我不确定,因为我不使用它。你可以检查出来http://combain.com). Wifi和cellid也取决于周围有多少wifi接入点和手机信号塔以及它们有多远(信号强度).如果你需要50米的精度,Hive定位无关但WiFi有机会接近这个值.
2009年的一些研究结果[3]
1.如何优步,去JEK等.乘车共享应用程序适用于所有设备?他们有额外的编码为GPS只?
他们可能有特定的定位策略,但它将基于在GPS中断期间使用其他来源。
1.我申请的是孟加拉国。这里的互联网很慢。这对GPS精度有负面影响吗?
其他答案声称互联网与GPS无关。是的,它与GPS无关,而是与位置有关。AGPS使用互联网获取3种类型的数据(卫星信号,如果星历和历书已经过时,或者设备从先前的位置定位移动了几百公里,那么它被称为冷启动,大约需要12- 15分钟无AGPS。
融合的位置提供商已经知道如何提供最好的解决方案与这些配置,所以你应该祝福它。
参考文献:
6kkfgxo02#
第一(和第二)
1.我怎样才能使准确率接近99%。我的代码架构有问题吗?
设备配置和代码架构都很重要。如果你已经有85%的成功率,我认为代码架构是好的。
就GPS而言,当涉及到设备配置和准确性时,视线是一个重要因素。虽然低成本的移动的可以通过清晰的视线返回准确的位置。您可以尝试多运行2个周期/等待以获得更高的准确性。
在最坏的情况下,为了它的价值,你也可以尝试使用LocationManager和GPS提供商技术检索位置,该技术作为15%的后备方案,只是为了比较并确保你使用的是你能得到的最准确的位置。
在大多数情况下,通过使用定位服务API,您将获得更好的电池性能以及更合适的准确性。
1.如何优步,去JEK等.乘车共享应用程序适用于所有设备?他们有额外的编码为GPS只?
他们做的工作,但并不总是与最高的准确度为应用程序内收到的位置。如果有任何位置黑客为我们的开发人员,我们需要找到他们,也许是第5页谷歌搜索结果:)或受益于开源环境。对我来说,最佳做法和android repo链接就足够了。你已经遵循了像Receive location updates的职位
1.我申请的是孟加拉国。这里的互联网很慢。这对GPS精度有负面影响吗?
互联网与LocationManager + GPS_PROVIDER无关