Проблема с Android при обнаружении последнего исправления GPS

Мое приложение использует LocationListener для отслеживания текущего местоположения. Пока поставщик GPS предоставляет регулярные исправления, это хорошо работает. Однако я хочу, чтобы мое приложение предупреждало пользователя, если местоположение больше не является надежным, потому что исправление больше не актуально. Поэтому я использовал timeCheckHandler для вызова getLastKnownLocation каждые несколько секунд.

Моя проблема в том, что даже когда точные исправления получаются часто, время, возвращаемое применением getTime () к местоположению, возвращаемому getLastKnownLocation, обычно старше, чем возвращаемое текущее время с помощью System.currentTimeMillis (), часто примерно на 20 секунд.

Я исследовал проблему дальше, добавив код в onLocationChanged (arg0) для регистрации времени исправления (arg0.getTime ()) и текущего времени (System .currentTimeMillis ()). Я снова вижу разницу примерно в 20 секунд.

В настоящее время код выглядит следующим образом:

    public void onLocationChanged(Location arg0) {
    mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
    addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}

и типичный вывод в мой файл отладки гласит:

Fix received at time: 1292091908 Now: 1292091928

Почему я должен видеть эту разницу между временем исправления и текущим системным временем?

Должен ли я признать, что разница в 20 секунд является нормой?

6
задан prepbgg 11 December 2010 в 18:50
поделиться