【问题标题】:onLocationChanged not working if time intervel not set in LocationRequest如果在 LocationRequest 中未设置时间间隔,则 onLocationChanged 不起作用
【发布时间】:2017-05-11 13:05:17
【问题描述】:

当我在 LocationRequest 中设置时间间隔时,位置变得完美 使用此代码

private static final long INTERVAL = 500 * 1;
private static final long FASTEST_INTERVAL = 500 * 1;
private static final int SMALLEST_DISPLACEMENT = 5;

protected void createLocationRequest() {
    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(INTERVAL);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
    mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

但是当我删除这些行时,onLocationChanged 不起作用。 LocationRequest中是否需要设置时间间隔?

 mLocationRequest.setInterval(INTERVAL);
 mLocationRequest.setFastestInterval(FASTEST_INTERVAL);

我想根据位移而不是时间间隔来获取位置。

【问题讨论】:

  • 据我所知,如果你不设置时间间隔,它不会随着时间间隔更新(或者在很长一段时间后,比如 60 分钟),只有在位置发生变化的情况下。
  • 如果您不设置间隔,您将永远无法获得位置。我一直在开车,但我的位置仅在时间间隔后更新。 onLocationChanged 取决于时间间隔而不是位移。

标签: android location android-googleapiclient


【解决方案1】:

这也让我感到惊讶,如果我解释错误,请有人纠正我。

来自LocationRequest源代码;

private long mInterval = 60 * 60 * 1000;   // 60 minutes
private long mFastestInterval = (long)(mInterval / FASTEST_INTERVAL_FACTOR);  // 10 minutes

如果你不设置setIntervalsetFastestInterval,那么它们保持默认值。

所以,当你只设置mLocationRequest.setSmallestDisplacement(...);

然后融合的提供者会考虑像这样的值

间隔:60分钟,最快间隔:10分钟,最小排量:5m

结果,它看起来像“不工作”

【讨论】:

  • 是的,它不起作用。您将在 10 分钟后获得新位置。为什么我们依赖于时间间隔。为什么位移 5m 后没有新位置
  • 我的意思是它实际上没有工作。由于间隔值具有默认值,您没有看到可能的 onLocationChanged 调用(可能您没有等待至少 10 分钟或更长时间)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 2014-06-18
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多