【问题标题】:How to force GPS provider to get speed in android?如何强制 GPS 提供商在 android 中获得速度?
【发布时间】:2010-08-08 10:00:47
【问题描述】:

我希望我的 GPS 应用程序在 android 中具有速度因素。我想同时使用网络提供商和 gps 提供商来获取位置更新。但是网络提供商几乎没有给出速度。虽然 GPS 提供商多次提供修复。

  1. 但是,一旦发现没有速度的修复,设备不会请求新的更新,直到 requestLocationUpdates 中设置的间隔或距离发生变化?如果是这样,我该如何强制继续它,直到我有速度。我找到了 Criteria 类,但我们只能在选择提供者时使用它。我想在获得修复时使用它。我可以吗?

  2. 我注意到的另一件事是,有时我开始时的速度为 127 m/s,即使我很稳定,但它会正常化为实际速度。这是设备问题(在 G1 中测试),还是通常取决于卫星或位置?

  3. 在选择提供商时是否使用标准,不会向我提供不适合它的位置点?就像我设置了 criteriaObj.setSpeedRequired(true) 一样,如果没有这样的可用点,我将不会获得积分。 因为无论如何我都需要位置更新。

有什么建议吗?

【问题讨论】:

    标签: android gps


    【解决方案1】:

    回答我的老问题..

    1. 要请求持续更新,您需要将最小距离和最小更新时间设置为零。然而,这会更快地耗尽设备电池,但您确信您可以充分利用 GPS 硬件并过滤掉您的状况。

    2. 这 127 m/s^2 确实是 android 的一个 bug。在查看了 Google 的 mytracks GPS 应用程序的代码后,我发现它已经被注意到并在他们的代码中过滤了 127 这个特殊情况!

    3. 是的,你不会得到没有速度的分数。

    【讨论】:

    • 不错的观察,但您如何评价“我的足迹”应用
    【解决方案2】:

    我认为您关于 Android 位置服务的问题已在recent Google I/O session 中得到解答,从幻灯片 pdf 中 84 张幻灯片中的第 73 张开始。

    特别是,该课程描述了如何实施一种退避模式,该模式从大量位置侦听器开始,并随着准确性的提高而移除侦听器(此时您的速度计算将是可信的)。

    【讨论】:

    • 感谢您的回复。我浏览了基于位置的服务的幻灯片,他们确实提到了退避模式。但这并不能回答为特定提供商(如 GPS)引入更多听众是否会给我更准确的数据。是这样吗 ?我的意思是,如果我有更多的听众来假设 GPS 提供商,我会在所有听众中获得不同的更新。我相信一位听众可以收集所有更新。哪一个是真的?
    • 如果您的目标是获得最准确的可用位置数据,那么一位听众不会这样做。幻灯片还可以,但只是一个大纲,不如视频那么丰富。你看过视频中关于标准的讨论吗?
    • 不,我没有看视频。但正如你所说,我会观看并尝试并评论我的结果:)
    • 我观看了最后一个位置服务部分的视频,但它解释了一个典型的场景,即有时我们需要准确地获取位置数据。对于这种情况,退避模式是一个很好的例子,因为我们越靠近我们就会关闭听众。但是我的应用程序是一个跟踪应用程序,必须不断更新,所以这个解决方案没有用。我找到了一些答案,比如在 API 本身中明确提到了将时间和距离设置为 0 以进行持续更新。虽然我的网络提供商不提供速度,但我从 LocationProvider 类方法中确认了这一点。
    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2014-09-05
    • 2014-05-04
    • 2012-02-22
    • 2012-08-14
    • 2011-09-05
    相关资源
    最近更新 更多