【问题标题】:Is there an alternative to Location Client (Google Play API)?有位置客户端(Google Play API)的替代品吗?
【发布时间】:2014-04-04 11:24:49
【问题描述】:

我正在开发一个使用位置数据的应用,它需要在中国运行。这里出售的 Android 设备基本上没有安装 Google Play API,唯一的方法是根手机安装它。所以我坚持使用 LocationManager,它比 LocationClient(Google Play API 的一部分)效果差得多。

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

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

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

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

【问题讨论】:

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


【解决方案1】:

GPS 无法正常工作的原因可能是缺少所需的 GPS 元数据(星历和年历数据),或者是因为该元数据的获取速度较慢。对于后一种情况,在大多数国家,GPS 星历和历书数据可通过网络资源获得。 如果没有,GPS 芯片必须从卫星上下载,这可能需要 5-20 分钟(最快的时间是初始数据流为 GPS 芯片提供了足够的信息以获取锁定)。我不熟悉通过网络资源在中国获得这些数据的情况,但从你的经历来看,这听起来并不广泛。 (谷歌关键字以获取更多信息:SUPL、星历、年历)。

当 GPS 不可用或锁定速度较慢时,网络地理定位是备用,它使用 wifi 点和手机信号塔来三角定位位置。这需要设备的互联网服务发送它看到的 AP + 塔,然后该服务发回一个位置。 30 到 500 米的精度水平非常适合这一点。

(顺便说一句,网络地理定位也用于“播种” GPS 芯片以帮助其更快地锁定)

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

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

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

我怀疑这会为您所在的区域提供更好的网络地理定位精度,因为您已经获得了不错的结果,但也许值得研究。

【讨论】:

  • 感谢您的回答!我不知道 Mozilla 有地理定位 API,将试一试,看看它在中国是如何工作的。
  • 提防 Mozilla Geolocation API:The service is currently provided as-is, free of charge, without any guarantee on availability, accuracy of results or continued existence. We don't offer any commercial plans for the service and have no plans to provide such.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多