是否有替代Location Client(Google Play API)?

时间:2014-04-04 11:24:49

标签: android geolocation google-play-services locationmanager location-client

我在使用位置数据的应用上工作,它需要在中国工作。在这里销售的Android设备基本上没有安装Google Play API,唯一的方法是根据手机安装它。因此,我坚持使用LocationManager,它比LocationClient(Google Play API的一部分)更糟糕。

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

该应用程序应该经常监视您在街道上的移动,例如。每秒更新一次(电池使用率高,对我的客户来说不是问题)并在到达某些位置时执行某些操作。

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

我问是否有人知道可以提供比直接使用LocationManager更好的结果的库,或者解决方法如何使用LocationManager来改善结果?

1 个答案:

答案 0 :(得分:1)

由于缺少所需的GPS元数据(星历和年历数据),或者由于此元数据的缓慢获取,GPS无法正常运行。对于后一种情况,在大多数国家,GPS星历和年历数据可通过网络源获得。 如果没有,GPS芯片必须从卫星下载5到20分钟(最快的时间是初始数据流为GPS芯片提供足够的信息以获得锁定)。我不熟悉这些数据在中国通过网络资源的可用性,但听起来它并没有广泛提供你所经历的。 (谷歌的关键词更多信息:SUPL,星历,alamanac)。

当GPS无法使用或锁定速度缓慢时,网络地理位置就是后备,它使用wifi点和手机信号塔对位置进行三角测量。这需要设备的互联网服务来发送它看到的AP +塔,并且服务发回一个位置。 30至500米的准确度对此非常有利。

(顺便说一下,网络地理位置也用于'播种'GPS芯片,以帮助它获得更快的锁定)

Android上的网络地理位置通常由Google网络服务提供,但手机可以配置为使用其他提供商。

您可以尝试使用Mozilla的免费网络地理定位服务,以避免使用Google(Google Play或Google的网络地理位置服务器)或内置网络位置服务: https://location.services.mozilla.com/

您需要申请API密钥:https://location.services.mozilla.com/api 对于代码示例:此应用程序既提供数据又是服务的客户端:https://github.com/mozilla/MozStumbler

我怀疑这会为您所在的区域提供更好的网络地理位置准确性,因为您已经取得了良好的效果,但也许值得研究。