Почему locationmanager возвращает старые исправления местоположения с новым gettime-timestamp?

У нас есть приложение, которое при действии пользователя пытается определить местоположение. Он слушает как по GPS, так и по сети, и имеет матрицу решений, основанную на времени / точности, чтобы определить, когда прекратить прослушивание и что исправить, чтобы вернуться.

Иногда мы замечали очень странное поведение. Мы используем классический способ узнать, сколько лет исправлению, например:

long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
    Log.d(TAG, "location too old.");
    return;
}

Но иногда, согласно возвращенной метке времени, местоположение location.getTime, возвращаемое из ОС, имеет возраст около 15-20 секунд, хотя мы можем точно сказать, что он очень старый. Например, если фиксирование долготы / широты происходит из положения, в котором телефон находился 30 минут назад!

Кажется, это происходит как от Wi-Fi, так и от сети, но не от GPS. Для меня это абсолютно безумие. Кто-нибудь еще видел это и есть ли способ обойти это?

Мы получили его на нескольких разных телефонах, последний из которых - Samsung Galaxy S II.

Помощь будет очень приветствоваться.

РЕДАКТИРОВАТЬ: Чтобы быть действительно ясным, проблема в том, что обратный вызов "onlocationchanged" вызывается ОС с местоположением с возрастом метки времени, возможно, пару секунд, когда я точно знаю, что долгота / широта в "новом" Исправить это место, где телефон не был в течение как минимум 30 минут.

Это затрудняет точное определение, где телефон...

1 ответ

Похоже, это происходит как от Wi-Fi, так и от сети, но не от GPS.

Это кажется справедливым, потому что в триангуляции Wi-Fi и сети на основе сотового узла точность очень плохая. Они, вероятно, используют кэшированные места, которые датируются 30 минут назад. Если вы не изменили свой сотовый сайт или не переехали в другое здание, чтобы можно было обнаружить новые точки доступа, я боюсь, что вы получите только кэшированные местоположения. Если вы хотите свежие местоположения, используйте провайдера GPS.

Другие вопросы по тегам