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