Мое приложение использует 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 секунд является нормой?