Mamy aplikację, która po akcji użytkownika próbuje uzyskać poprawkę lokalizacji. Słucha zarówno w systemie GPS, jak i w sieci i ma macierz decyzyjną opartą na czasie/dokładności, aby określić, kiedy przestać słuchać i jaką poprawkę powrócić.Dlaczego lokalizator zwraca stare poprawki lokalizacji za pomocą nowego gettime-timestamp?
Zauważyliśmy, czasami, bardzo dziwne zachowanie. Używamy klasyczny sposób, aby zobaczyć, jak stary poprawka jest tak:
long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
Log.d(TAG, "location too old.");
return;
}
Ale Czasami location.getTime wrócił z OS ma wiek być może 15-20 sekund, w zależności od zwracanej datownik, chociaż możemy stwierdzić z całą pewnością, że jest bardzo stary. Na przykład, jeśli zmiana długości/szerokości geograficznej jest z pozycji, w której telefon był włączony 30 minut temu!
Wydaje się, że dzieje się to zarówno z Wi-Fi, jak iz sieci, ale nie z GPS. Dla mnie jest to całkowicie szalone. Czy ktokolwiek widział to i czy jest na to sposób?
Dostaliśmy go na kilka różnych telefonów, z których najnowszym jest Samsung Galaxy S II.
Pomoc byłaby niezwykle pożądana.
EDIT: Aby być naprawdę jasne, problemem jest to, że „onlocationchanged” zwrotna jest wywoływana przez system operacyjny z lokalizacji z wiekiem datownika z być może kilka sekund, kiedy wiem na pewno, że długość/szerokość geograficzna w "nowej" poprawce to miejsce, w którym telefon nie jest dostępny przez co najmniej 30 minut.
To sprawia, że nieco trudno dokładnie określić, gdzie słuchawka to ...
Myślę, że brakuje wam mojego punktu. Lokalizacje w pamięci podręcznej byłyby w porządku, gdyby znacznik czasowy lokalizacji odzwierciedlał to. Ale zrobienie buforowanej, starej poprawki i zastosowanie aktualnego znacznika czasu jest szalone. zaktualizuję moje pytanie, aby było jeszcze jaśniejsze. – Mathias
Dzięki za wyczyszczenie; Znalazłem [winowajcę] (http://www.netmite.com/android/mydroid/frameworks/base/location/java/com/android/internal/location/LocationCollector.java) – Reno
HI guyz, w stosunku do tego Mam właściwą lokalizację, ale kiedy staram się ustalić, ile lat ma ta lokalizacja, używając - >> long age = System.currentTimeMillis() -location.getTime(); i zależy od tej wartości i obliczyć, jak moja lokalizacja jest, ale problem jest czasami mam ujemną wartość (wiek). nie jest w stanie zrozumieć, dlaczego, ponieważ ten wiek nigdy nie będzie negatywny – Anjan