【发布时间】:2011-10-10 03:43:39
【问题描述】:
在我的应用程序中,我想确定用户的当前位置。不过,在这方面我确实有几个问题:
有不同的位置提供者,哪一个最准确? GPS Provider 或 Network Provider?
这些可用的提供程序在多大程度上不同?它们是如何运作的?
能否请您提供一些关于如何开始在我的应用程序中实现 GPS 功能的 code-sn-ps 或教程?
【问题讨论】:
标签: android location location-provider
在我的应用程序中,我想确定用户的当前位置。不过,在这方面我确实有几个问题:
有不同的位置提供者,哪一个最准确? GPS Provider 或 Network Provider?
这些可用的提供程序在多大程度上不同?它们是如何运作的?
能否请您提供一些关于如何开始在我的应用程序中实现 GPS 功能的 code-sn-ps 或教程?
【问题讨论】:
标签: android location location-provider
Android 中有 3 个位置提供程序。
他们是:
gps –>(GPS、AGPS): GPS 位置提供商的名称。这 提供商使用卫星确定位置。根据 条件下,此提供程序可能需要一段时间才能返回位置修复。 需要权限 android.permission.ACCESS_FINE_LOCATION。
network –> (AGPS, CellID, WiFi MACID): 网络名称 位置提供者。该提供商根据以下条件确定位置 蜂窝塔和 WiFi 接入点的可用性。结果是 通过网络查找检索。需要任何一个 权限 android.permission.ACCESS_COARSE_LOCATION 或 android.permission.ACCESS_FINE_LOCATION。
passive –> (CellID, WiFi MACID): 接收位置而不实际启动位置修复。这 提供者可用于被动接收位置更新,当其他 应用程序或服务在没有实际请求的情况下请求它们 自己定位。此提供程序将返回由 其他供应商。需要权限 android.permission.ACCESS_FINE_LOCATION,虽然如果 GPS 不是 启用此提供程序可能只返回粗略的修复。这是什么 Android 调用这些位置提供程序,然而,底层 使这些东西工作的技术被映射到特定的集合 硬件和电信公司提供的功能(网络服务)。
最好的方法是先使用“网络”或“被动”提供商, 然后回退到“gps”,根据任务,在 提供者。这涵盖了所有情况,并提供了最低常见的 分母服务(在最坏的情况下)和优质的服务(在最好的情况下) 案例)。
文章参考:Android Location Providers - gps, network, passive By Nazmul Idris
代码参考:https://stackoverflow.com/a/3145655/28557
----------更新-------- ---
现在 Android 已经融合了位置提供程序
Fused Location Provider 智能管理底层定位技术,并根据您的需求为您提供最佳位置。它简化了应用获取用户当前位置的方式,提高了准确性并降低了功耗
融合位置提供者提供三种获取位置的方式
参考资料:
官网: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
------------------------------------------ ------------
【讨论】:
GPS 通常比网络更准确,但有时 GPS 不可用,因此您可能需要在两者之间切换。
一个好的开始可能是查看 android 开发网站。他们有一个专门用于确定用户位置的部分,其中包含您需要的所有代码示例。
http://developer.android.com/guide/topics/location/obtaining-user-location.html
【讨论】:
这里提到了一些很棒的答案。您可以采取的另一种方法是使用一些在线提供的免费 SDK,例如 Atooma、tranql 和 Neura,它们可以与您的 Android 应用程序集成(集成时间不到 20 分钟)。 除了为您提供用户的准确位置外,它还可以让您深入了解用户的活动。此外,其中一些会消耗不到 1% 的电池电量
【讨论】: