Android 位置提供商-GPS 还是网络提供商? ?

在我的应用程序中,我想确定用户的当前位置。然而,在这方面我确实有几个问题:

  1. 有不同的位置提供商,哪一个是最准确的? GPS 供应商还是 网络供应商

  2. 这些可用的供应商有多大的不同? 它们是如何运作的?

  3. 您能否提供一些代码片段或教程,告诉我如何开始在我的应用程序中实现 GPS 功能?

144269 次浏览

GPS 通常比网络更精确,但有时 GPS 不可用,因此您可能需要在两者之间切换。

一个好的开始可能是查看 android 开发站点。他们有一个专门用于确定用户位置的部分,其中包含您需要的所有代码示例。

Http://developer.android.com/guide/topics/location/obtaining-user-location.html

在 Android 中有3个位置提供程序

他们是:

GPS-> (GPS,AGPS) : GPS 位置提供者的名称 供应商使用卫星确定位置 条件下,此提供程序可能需要一段时间才能返回位置修复程序。 需要权限 android.permission. ACCESS _ FINE _ LOCATION。

Network-> (AGPS,CellID,WiFi MACID) : 网络名称 位置提供程序。此提供程序根据 手机基站和 WiFi 接入点的可用性 通过网络查找检索 权限 android.permission. ACCESS _ COARSE _ LOCATION 或 权限.ACCESS _ FINE _ LOCATION。

被动-> (CellID,WiFi MACID) : 一个用于 接收位置而不实际启动位置修复 提供程序可用于被动接收位置更新时,其他 应用程序或服务请求它们,而不实际请求 此提供程序将返回由 其他供应商。需要许可 ACCESS _ FINE _ LOCATION,但是如果 GPS 不是 启用此提供程序可能只返回粗略的修复程序 然而,Android 将这些位置提供程序称为底层的 使这些东西工作的技术被映射到特定的 硬件和电信提供的能力(网络服务)。

最好的方法是首先使用“网络”或“被动”提供者, 然后回到“ gps”,根据任务,在 这涵盖了所有的情况,并提供了一个最低的共同 分母服务(在最坏的情况下)和伟大的服务(在最好的 案例)

enter image description here

参考文章: Android 地理位置提供商-gps,网络,被动作者 Nazmul Idris

代码参考: https://stackoverflow.com/a/3145655/28557

————————————更新——————————————

现在 Android 有 融合定位提供商

Fused Location Provider 智能地管理底层的定位技术,并根据您的需要为您提供最佳的定位。它简化了应用程序获取用户当前位置的方法,提高了准确性,降低了耗电量

融合位置提供程序提供了三种获取位置的方法

  1. 最后位置: 当你想知道当前位置时使用一次。
  2. 使用监听器请求位置: 当应用程序位于屏幕/前端且需要继续位置时使用。
  3. 使用挂起意图请求位置: 使用后台应用程序并请求继续位置。

参考文献:

官方网站: http://developer.android.com/google/play-services/location.html

融合位置提供程序示例: Https://github.com/kpbird/fused-location-provider-example :

Http://blog.lemberg.co.uk/fused-location-provider

--------------------------------------------------------

这里提到了一些很棒的答案。你可以采取的另一种方法是使用一些免费的在线软件开发工具包,比如 Atooma、 tranql 和 Neura,它们可以与你的 Android 应用程序集成(集成不到20分钟)。 除了提供用户的准确位置之外,它还可以让您对用户的活动有很好的了解。而且,有些电池消耗的电量还不到你电池的1%