7

我在使用位置数据的应用程序工作,它需要在中国工作。这里销售的Android设备很大程度上根本没有安装Google Play API,唯一的办法是根据手机进行安装。所以我坚持使用LocationManager,它比LocationClient(Google Play API的一部分)更糟糕。是否有其他位置客户端(Google Play API)?

我的问题是LocationManager在从GPS_PROVIDER读取时,经常无法连接到足够多的卫星(在中国),修复之间偶尔会有很大的时间间隔。从NETWORK_PROVIDER读取时,我可以获得更多的频率修正,但精度范围从30到500.远不及LocationClient API质量。

该应用程序应该通过频繁的街道监控你的运动,例如。每秒更新一次(高电量使用,对我的客户来说不成问题),并在您到达特定位置时执行某些操作。

如果我使用Google Play API和LocationClient,它确实运行良好。但是这仅限于Nexus4或某些非中国Android设备。

我在问有没有人知道一个库可以提供比直接使用LocationManager更好的结果,或者解决方案如何使用LocationManager来改进结果?

+0

https://github.com/novoda/Novocation – bGorle

+1

为什么不使用位置管理器来编写自己的实现http://developer.android.com/guide/topics/location/strategies.html –

+0

另外http:// android -developers.blogspot.com/2011/06/deep-dive-into-location。html –

回答

1

由于缺少所需的GPS元数据(星历和年历数据),或者由于元数据采集速度缓慢,GPS运行不太可能。对于后一种情况,在大多数国家,GPS星历和年历数据可通过网络来源获得。 如果没有,GPS芯片必须从卫星下载,这可能需要5-20分钟(最快的时候,当初始数据流提供足够的GPS芯片获取锁定信息时)。我不太了解通过网络资源在中国获得这些数据的情况,但是听起来这并不是您所遇到的情况。 (关键字谷歌更多信息:SUPL,星历,alamanac)。

当GPS不可用或获得锁定速度较慢时,网络地理定位是后备,它使用wifi点和手机信号塔对一个位置进行三角测量。这需要互联网服务让设备发送它所看到的AP +塔,并且该服务发回一个位置。 30至500米的精度水平对此非常有用。

(顺便说一句,网络的地理定位位置也被用来“种子”的GPS芯片,以帮助它获得更快的锁)

在Android

网络地理位置通常由一个谷歌的网络服务提供,但手机可以配置为由运营商使用其他提供商。

你能避免使用谷歌(谷歌播放或谷歌的网络地理位置服务器)或通过尝试Mozilla的免费为使用的网络地理定位服务内置网络定位服务: https://location.services.mozilla.com/

您需要申请一个API关键:https://location.services.mozilla.com/api 有关代码示例:这个程序既有助于数据,是该服务的客户端:https://github.com/mozilla/MozStumbler

我怀疑这将让你在该地区更好的网络地理定位精度,因为你已经取得了良好的效果,但也许值得调查。

+0

感谢您的回答!我不知道Mozilla具有地理定位API,将会看到它在中国如何运作。 – Sinisa

相关问题