2011-06-22 14 views
9

LocationManager#requestLocationUpdates umożliwia przekazanie parametru minTime i minDistance. Ciężko mi się zastanowić, jakie powinny być te liczby i mogę docenić pewne wskazówki.Jak zdecydować, jakiego przedziału użyć dla requestLocationUpdates?

Nasza aplikacja nie jest aplikacją nawigacyjną "zakręt po zakręcie"; Chcę tylko pokazać 10 najbliższych punktów. Ponieważ pokazuję 10 najbliżej, mogą się trochę zestarzeć, ale jeśli użytkownik jest w poruszającym się pojeździe, chciałbym/musiałbym je dość często aktualizować, aby uniknąć stagnacji.

Wyobrażam sobie, że wiele osób znajduje się w podobnej sytuacji, co niewyraźne wymagania: "Nie chcę, aby dane były zbyt stęchłe, ale nie chcę marnować baterii". Jak zmienić te niejasne wymagania w konkretne liczby?

+1

Oto odpowiedzi, które stały się nieaktualne - teraz [minTime ma pierwszeństwo] (http://stackoverflow.com/a/16753705/281545) - więc nie jest już bez znaczenia. –

Odpowiedz

3
***<Edit>*** 
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location. 
***</Edit>*** 

W zależności od problemu, wydaje mi się, że parametr minTime jest nieistotny.

To, o co naprawdę należy się martwić, to minDistance, więc jeśli użytkownik znajduje się w szybko poruszającym się pojeździe, będzie nadążał.

Jeśli osoba jedzie 60 mph, porusza się około 27 metrów na sekundę.

Biorąc pod uwagę tę critera ... Powiedziałbym używać:

MinTime = 60000 // aktualizuje co 60 sekund
minDistance = 90 // w szybko poruszającym się pojeździe, będzie aktualizować mniej więcej raz na 3 sekundy

+0

Jak wymyśliłeś 60000? Dlaczego nie o wiele więcej? Lub mniej? –

+0

To dość przypadkowe. Nie ma "poprawnego" numeru, ale raz na minutę nie zabije baterii, a przynajmniej utrzyma wyniki nieco w zasięgu. Ważniejszą wartością jest odległość. Musisz zdecydować - jak daleko może podróżować samochód, zanim odświeżysz dane? Milę? pół mili? jeszcze? mniej? – Matt

+1

Przepraszam, ale musisz to zmienić - teraz [minTime ma pierwszeństwo] (http://stackoverflow.com/a/16753705/281545) - więc nie jest już bez znaczenia. –

3

został opisany ładnie w requestLocationUpdates docs

częstotliwość notyfikacji lub nowych lokalizacjach mogą być sterowane za pomocą MinTime i umysłu parametry istance. Jeśli minTime jest większa niż 0, menedżer LocationManager może potencjalnie spocząć na przez minTime milisekundy między aktualizacjami lokalizacji w celu oszczędzania energii. Jeśli minDistance jest większe niż 0, lokalizacja będzie nadawana tylko wtedy, gdy urządzenie przesunie się o minDistance metrów. Aby uzyskać informację jak najczęściej możliwe, ustawić oba parametry 0. usług tło powinno być staranne o ustawienie wystarczająco wysoką MinTime tak, że urządzenie nie zużywają zbyt wiele władzy przez utrzymywanie radia GPS lub bezprzewodowych we wszystkich czasach . W szczególności nie zaleca się wartości pod 60000ms.

+0

"wartości poniżej 60000ms nie są zalecane" Czy dotyczy to usług pierwszoplanowych lub tylko usług tła? (Nie jestem usługą w tle). Jaka powinna być wartość dla usług pierwszoplanowych, które nie wymagają maksymalnej częstotliwości, na przykład mojej? –

+0

jest to zarówno usługa tła, jak i usługa pierwszego planu. – Sujit

+1

Cytat z dokumentów nie jest już ważny –

1

Mogę zaproponować lepszy pomysł, który początkowo wymaga aktualizacji z nieco większym odstępem czasu i uzyskania lokalizacji. Teraz sprawdź, czy odległość między kolejnymi lokalizacjami jest większa niż odległość minimalna, aby odróżnić bliższe lokalizacje, zmienić częstotliwość aktualizacji żądania na mniejszą. Podobnie, jeśli w tym niższym przedziale obliczona odległość jest znacznie niższa, co oznacza, że ​​użytkownik nie podróżuje przez pojazd, wówczas interwał aktualizacji do większej wartości. Aby zaktualizować interwał, musisz wyrejestrować poprzedni podmiot nasłuchujący, a następnie dokonać ponownej rejestracji z nową wartością.

0

Dla twojego problemu, spójrz na PASSIVE_PROVIDER. Zasadniczo pomoże ci to uzyskać aktualizacje, gdy inne aplikacje mogą o nie poprosić.Możesz więc użyć tego w połączeniu z innym dostawcą.

Powiązane problemy