#android #locationmanager #android-location
#Android #locationmanager #android-местоположение
Вопрос:
У нас есть приложение, которое после действий пользователя пытается получить исправление местоположения. Он прослушивает как 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.
Комментарии:
1. Я думаю, вы упускаете мою точку зрения. Кэшированные местоположения были бы прекрасны, если бы временная метка местоположения отражала это. Но использование кэшированного старого исправления и применение текущей временной метки — это безумие. я обновлю свой вопрос, чтобы он был еще более понятным.
2. Спасибо, что прояснили это; Я нашел виновника
3. ПРИВЕТ, парень, относительно этого я получил правильное местоположение, но когда я пытаюсь определить, сколько лет этому местоположению, используя ->> long age = System.currentTimeMillis() -location.getTime(); и в зависимости от этого значения я вычисляю, каково мое местоположение, но проблема в том, что иногда я получаю отрицательное значение (возраст). не удалось понять, почему, потому что этот возраст никогда не будет отрицательным