【问题标题】:Android Location Providers - GPS or Network Provider?Android 位置提供商 - GPS 或网络提供商?
【发布时间】:2011-10-10 03:43:39
【问题描述】:

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

  1. 有不同的位置提供者,哪一个最准确? GPS ProviderNetwork Provider

  2. 这些可用的提供程序在多大程度上不同?它们是如何运作的?

  3. 能否请您提供一些关于如何开始在我的应用程序中实现 GPS 功能的 code-sn-ps 或教程?

【问题讨论】:

    标签: android location location-provider


    【解决方案1】:

    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 智能管理底层定位技术,并根据您的需求为您提供最佳位置。它简化了应用获取用户当前位置的方式,提高了准确性并降低了功耗

    融合位置提供者提供三种获取位置的方式

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

    参考资料:

    官网: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

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

    【讨论】:

    • 请注意,还有可以使用的 Google Play Services Fused Locator 提供程序。
    • 是否可以制作自己的自定义位置提供程序? android.permission.INSTALL_LOCATION_PROVIDER 已签名或系统意味着我应该能够在有根设备上安装一个,不是吗?
    • 融合位置提供程序仅适用于 API>= 19。对于运行旧版本的设备,我们仍然需要遵循旧程序,对吧?
    • 如果 GPS 无法获取位置,是否有任何示例代码/现有 API 可以查找 GPS 位置并在一段时间后回退到网络提供商?还是应该通过一些计时器逻辑在代码中处理?
    • 被动提供者 """此提供者可用于在其他应用程序或服务请求位置更新时被动接收位置更新,而无需自己实际请求位置。"""
    【解决方案2】:

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

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

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

    【讨论】:

    • @Noman 你想得到你的位置经纬度吗?
    • @Scorpio 我实际上想知道 NETWORK PROViDER 和 GPS PROVIDER 中哪个选项更好。 . .Otra 向我发送一个链接作为我的问题的答案,这对我帮助很大...现在我在我的应用程序中使用 NETWORK PROVIDER :-)
    【解决方案3】:

    这里提到了一些很棒的答案。您可以采取的另一种方法是使用一些在线提供的免费 SDK,例如 Atooma、tranql 和 Neura,它们可以与您的 Android 应用程序集成(集成时间不到 20 分钟)。 除了为您提供用户的准确位置外,它还可以让您深入了解用户的活动。此外,其中一些会消耗不到 1% 的电池电量

    【讨论】:

    • 我可以参考你提到的 sdk 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2014-05-04
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多