Android位置提供商 - GPS或网络提供商?

Nom*_*man 120 android location location-provider

在我的应用程序中,我想确定用户的当前位置.但是我在这方面有几个问题:

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

  2. 这些可用的提供商有多远?它们如何运作?

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

Vin*_*tti 268

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.

被动 - >(CellID,WiFi MACID):一种特殊的位置提供程序,用于接收位置而无需实际启动位置修复.当其他应用程序或服务请求时,此提供程序可用于被动地接收位置更新,而无需自己实际请求位置.此提供程序将返回其他提供程序生成的位置.需要权限android.permission.ACCESS_FINE_LOCATION,但如果未启用GPS,则此提供程序可能只返回粗略修复.这就是Android所谓的这些位置提供商,然而,使这些东西工作的基础技术被映射到特定的硬件和电信公司提供的功能(网络服务).

最好的方法是先使用"网络"或"被动"提供程序,然后再使用"gps",并根据任务在提供程序之间切换.这涵盖了所有情况,并提供最低公分母服务(在最坏的情况下)和优质服务(在最好的情况下).

在此输入图像描述

文章参考:Android位置提供商 - gps,网络,被动作者:Fernando Cejas

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

-----------------------更新-----------------------

现在Android有Fused位置提供商

融合位置提供商智能地管理底层定位技术,并根据您的需求为您提供最佳位置.它简化了应用程序获取用户当前位置的方式,提高了准确性并降低了功耗

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

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

参考文献:

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

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

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

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

  • 请注意,还可以使用Google Play服务融合定位器提供程序. (2认同)

Otr*_*tra 7

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

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

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