在我的应用程序中,我想确定用户的当前位置。然而,在这方面我确实有几个问题:
有不同的位置提供商,哪一个是最准确的? GPS 供应商还是 网络供应商?
这些可用的供应商有多大的不同? 它们是如何运作的?
您能否提供一些代码片段或教程,告诉我如何开始在我的应用程序中实现 GPS 功能?
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”,根据任务,在 这涵盖了所有的情况,并提供了一个最低的共同 分母服务(在最坏的情况下)和伟大的服务(在最好的 案例)
在 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”,根据任务,在 这涵盖了所有的情况,并提供了一个最低的共同 分母服务(在最坏的情况下)和伟大的服务(在最好的 案例)
参考文章: Android 地理位置提供商-gps,网络,被动作者 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
--------------------------------------------------------
这里提到了一些很棒的答案。你可以采取的另一种方法是使用一些免费的在线软件开发工具包,比如 Atooma、 tranql 和 Neura,它们可以与你的 Android 应用程序集成(集成不到20分钟)。 除了提供用户的准确位置之外,它还可以让您对用户的活动有很好的了解。而且,有些电池消耗的电量还不到你电池的1%