【问题标题】:get coordinates with google play services vs without google play services使用谷歌播放服务获取坐标与不使用谷歌播放服务
【发布时间】:2014-04-17 10:27:36
【问题描述】:

我正在尝试获取当前设备位置,但有时无法获取。但是,我很惊讶谷歌地图可以得到它。

所以我编写了一个程序来使用 LocationClient(带有 google-play-service)而不是 LocationManager(没有 google-play-service)。

正如怀疑的那样,LocationClient 对象可以比 LocationManager 执行得更好。但为什么?两者都不是从手机的硬件中获得结果吗?

我尝试反编译 google-play-service 以进一步了解,但不幸的是某些代码无法反编译。

最终,我试图创建一个程序,它不依赖于谷歌播放服务,但仍然能够像谷歌地图一样获取坐标。

希望你们能帮我解决这个问题。非常感谢!!!

问候, 德克斯特

【问题讨论】:

    标签: android google-maps geolocation google-play-services


    【解决方案1】:

    您看过 Google IO 去年的“Android 位置新功能”吗? https://developers.google.com/events/io/sessions/325337477

    LocationClient(带有 google-play-service)可帮助您制作新一代的“上下文应用程序”。这个api使用蓝牙、加速度计、gps、wifi等。基本上,这个 api 更适合在室内跟踪,但也适用于室外。我们无法确切知道它是如何工作的,因为谷歌不想开源:(

    【讨论】:

    • 是的,我确实检查过了。我在想,谷歌播放服务可能会定期获取用户的位置?这是最有可能的,否则他们如何能够如此快速准确地定位到用户?当然也可以借助传感器。想法?
    • 是的,但谷歌提到你可以通过使用 google-play-service api 来节省电池。这意味着播放服务不会定期跟踪。我认为如果找到了高精度的位置,他们会使用一种算法来保持平衡。如果您想深入了解位置管理器,请在完整的 Android 源代码中查找“融合位置提供程序”。您可以在框架级别找到此源代码。
    • 我也读到了融合位置。既然您说“播放服务不会定期跟踪这么多”,这意味着您确实同意它会定期跟踪用户对吗?
    【解决方案2】:

    除了作为提供商的 GPS,位置在任何情况下都不仅仅完全取决于设备的硬件。它永远不会完全独立于设备硬件,但有所不同。

    在使用 LocationManager 时,您需要指定提供者 [如 GPS、网络或被动] 以从其中获取 Location
    这部分在很大程度上取决于设备硬件。

    到目前为止,我们正在讨论用于源和管理器的 android.location 包。

    现在使用 Google Play 服务 SDK 来到 Location APIs
    这里重要的部分是他们所说的获取位置的来源:
    融合的位置提供者

    Fused Location Provider 智能管理底层 定位技术,并根据您的情况为您提供最佳位置 需要。

    因此,当我们将LocationClientLocationRequest 结合使用时,我们可以指定所需的准确度级别。这样就不会高度依赖设备的硬件,而更多地依赖于我们指定的准确度级别。
    除了我认为PRIORITY_HIGH_ACCURACY 的情况外,这将取决于设备中 GPS 硬件/接收器的质量。

    就地图而言,如果您需要最准确的位置,无需 Google Play 服务,我认为可以从GPS_PROVIDER 实现。

    【讨论】:

    • 感谢您的回复。我只是想知道为什么即使在晴朗的天空下我也无法获得拉长。也许这是一个愚蠢的假设,但我能说只要我能清楚地看到天空,我就一定能得到拉长吗?
    • 是的,晴朗的天空和视线,那么通过GPS应该很容易获得纬度
    • 这就是为什么我现在很困惑。我有晴朗的天空,我面前有一些建筑物,但距离我大约300米。但我不能得到很长的时间。基本上我想确定我所在的当前位置无法获得长纬度,但情况对我来说似乎很好。如何验证当前位置不适合 GPS 信号?
    • 首先需要确保监听器实现正确,检查导入
    • 另外,只需在您的设备上运行谷歌地图,看看您是否可以在上面获取位置,如果可以,则需要检查您的代码....如果您在代码中获得位置之后在谷歌地图上获取它,那么您的代码可以很好地获取最后一个已知位置,但不能正确放置以获取当前位置
    猜你喜欢
    • 1970-01-01
    • 2014-08-18
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多