【问题标题】:Android - LocationManager requestLocationUpdates - location updates not consistentAndroid - LocationManager requestLocationUpdates - 位置更新不一致
【发布时间】:2014-04-03 09:12:57
【问题描述】:

我尝试每 10 分钟获取一次位置更新,但位置更新时间不一致。有时我会在 10 分钟后获得位置更新,有时我会在 2 小时后获得位置更新。应用在后台线程上获取位置更新。

代码如下:

_locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER,
                10 *  60 * 1000,
                0, 
                _locationListener,
                _gpsHandlerThread.getLooper());

我还尝试设置 minTime(10) 和 minDistance(10 米) 这两个值,但即使在 1-2 分钟后我也会收到更新。我不确定 minTime 和 minDistance 是否具有 OR 逻辑,即时间间隔是否为 10 分钟或用户已移动 10 米或具有逻辑。

我的要求是 - 如果用户距离上一个位置 10 米,则每 10 分钟获取一次用户位置。

我怎样才能做到这一点?我寻求帮助,但几乎没有解释它是如何工作的。

【问题讨论】:

  • 如果您使用的是LocationManager.GPS_PROVIDER,则可能需要长达 20 分钟才能从卫星上获得第一个修复 - 更不用说您需要清晰的天空视野,如果您正在室内的。另一方面,LocationManager.NETWORK_PROVIDER 可以在您的设备连接到无线网络后立即为您提供位置更新 - 缺点是这种方法不如您使用的 GPS 方法准确。

标签: android geolocation location


【解决方案1】:

使用这个处理程序来获取位置

private Handler customHandler = new Handler();
private Runnable updateTimerThread = new Runnable() {

@Override
public void run()
    {
        try
            {

                Location myLocation = mGoogleMap.getMyLocation();
                secndLocationListener.onLocationChanged(myLocation);
            }
        catch (Exception e)
            {
                Log.getStackTraceString(e);
            }

    }
    };

叫这个

   customHandler.postDelayed(updateTimerThread , 10 *  60 * 1000);

【讨论】:

    【解决方案2】:

    最好的方法不是通过 requestLocationUpdates,而是通过使用计时器定期启动更新。这应该可以避免您不必要地耗尽电池。所以我最终做了这样的事情:

    1. 我有一些检查,看看我是否喜欢 GPS 值。
    2. 如果我对 GPS 感到满意,我会删除更新,并启动计时器以再次开始获取更新。
    3. 我总是在恢复应用程序时收到更新。

    重新启动 GPS 更新的代码可能如下所示:

    Timer mTimer;
    private void sendFinalGps() {
        mLocationManager.removeUpdates(this);
        mTimer = new Timer();
        mTimer.schedule(new findGpsTime(), getTimeBetweenUpdates());
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      相关资源
      最近更新 更多