在我的应用程序中,我想确定用户的当前位置。然而,在这方面,我确实有几个问题:
请为我提供一些代码片段或教程
发布于 2011-07-21 19:43:29
安卓系统中有3个位置服务提供商。
它们是:
GPS -> (GPS,AGPS):位置提供商的名称。此提供商使用卫星确定位置。根据情况,此提供程序可能需要一段时间才能返回位置修复。需要权限android.permission.ACCESS_FINE_LOCATION。
网络-> (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 Location Providers - gps, network, passive By Nazmul Idris
代码参考:https://stackoverflow.com/a/3145655/28557
-----------------------Update-----------------------
现在安卓有了融合的位置提供商
融合位置提供商智能管理底层定位技术,并根据您的需求为您提供最佳位置。它简化了应用程序获取用户当前位置的方法,提高了精确度并降低了功耗
融合位置提供程序提供了三种获取位置的方式
。
参考:
官网: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
--------------------------------------------------------
发布于 2011-07-21 19:27:16
GPS通常比网络更准确,但有时GPS不可用,因此您可能需要在两者之间切换。
一个好的开始可能是看看android的开发站点。他们有一个专门用于确定用户位置的部分,它包含了您需要的所有代码样本。
http://developer.android.com/guide/topics/location/obtaining-user-location.html
发布于 2017-02-07 13:26:45
这里有一些很好的答案。你可以采取的另一种方法是使用在线提供的一些免费SDK,如Atooma,tranql和Neura,它们可以与你的Android应用程序集成(集成只需不到20分钟)。除了给你用户的准确位置之外,它还可以让你对用户的活动有很好的洞察力。此外,其中一些电池的耗电量还不到你电池的1%。
https://stackoverflow.com/questions/6775257
复制相似问题