У нас есть приложение, которое при действии пользователя пытается определить местоположение.Он слушает как по 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 минут.
Это затрудняетточно определить, где телефон это ...