【问题标题】:location updates using network provider使用网络提供商进行位置更新
【发布时间】:2013-01-09 12:16:58
【问题描述】:

我的要求是每 90 秒获取一次位置更新。 我正在为此使用网络提供商。

我这样做如下:

locationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 
        MINIMUM_TIME_BETWEEN_UPDATES, 
        MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
        new MyLocationListener());

在这里,在这个方法中,我将90000 传递为MINIMUM_TIME_BETWEEN_UPDATES,并将0 传递为MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,因此预期的结果是应该每隔90 秒调用一次监听器方法onLocationChanged()

但结果是 onLocationChanged() 方法首先在 75 秒内被调用,然后在 105 秒内,然后是 75105,... 等等。

我的要求是 90 秒获取位置更新,而不是不同的持续时间/周期。 如果没有找到给定更新的位置,我想获取最后一个已知位置。

请给我建议解决这个问题的方法。

【问题讨论】:

  • Narendra DroidWorm 向我们提供您的完整代码 我认为您在位置更新代码中没有做错任何事情,它会正常工作。我猜代码中有一些逻辑错误。

标签: android networking provider locationmanager


【解决方案1】:
  1. 将 MINIMUM_DISTANCE_CHANGE_FOR_UPDATES 的值设置为 500 或其他值,但不为零。

  2. 如果您想知道最后一个已知位置,请使用

Location loc = LocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

【讨论】:

  • 我按照您的建议将 MINIMUM_DISTANCE_CHANGE_FOR_UPDATES 更改为 500,但仍然得到相同的结果。即使是现在,我也收到了非统一持续时间的更新。
【解决方案2】:
if (mNetworkEnabled) {
    mLocationMgr.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 0, 0,
            locationListenerNetwork);
} 

在我的应用程序中,我正在使用这样的位置管理器。 在这里看到同样的问题: Android: requestLocationUpdates updates location at most every 45 seconds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多