2010-11-13 16 views
9

Próbuję uzyskać aktualną dokładność GPS za pomocą Location.getAccuracy(). Powraca jednak 1 (lub czasami 2), co wydaje się niemożliwe. Mapy Google mówią mi, że moja aktualna dokładność lokalizacji wynosi 40 metrów.Lokalizacja Androida.getAccuracy() zwraca 1

Jakieś myśli?

int accuracy = (int) loc.getAccuracy(); 
// This will give me accuracy = 1 

Odpowiedz

8

Z documentation of getAccuracy:

Zwraca dokładność poprawki w metrach.

Dlaczego nie wydaje się to możliwe? Wartość zwracana wynosząca 1, czasami 2 metry, jest idealnie dobra dla GPS. Dzięki dobrej sile sygnału i blokowaniu wielu satelitów możesz uzyskać taką dokładność.

(Poza tym, skoro jesteś odlewania do int swojej podłogi wartość. Dokładność może faktycznie być na przykład 1,9 m.)

1

40 metrów wygląda bardziej jak sieci komórkowej dokładności, ale nie GPS.

1

Zazwyczaj widzę 6-9 satelitów (Skandynawię) i uzyskuję około 2,0 metra dla funkcji getAccuracy() - i okazuje się, że w praktyce jest ona dokładna w zakresie +/- 40 cm.

3

Czy to możliwe, że dzwonisz pod numer getAccuracy() w LocationProvider, a nie w Location? Od docs:

public abstract int getAccuracy() 

Od: poziom API 1 Zwraca stałą opisującą poziomą dokładność tego dostawcę. Jeśli dostawca zwróci dokładniejsze dane lub dokładną lokalizację, zwracana jest nazwa ACCURACY_FINE, w przeciwnym razie, jeśli lokalizacja jest tylko przybliżona, zwracana jest nazwa ACCURACY_COARSE.

przypadku ACCURACY_FINE i ACCURACY_COARSE są zdefiniowane jako:

public static final int ACCURACY_COARSE 

od: API Poziom 1 Stała wskazując w przybliżeniu wymagania dokładności

Constant Value: 2 (0x00000002) 
public static final int ACCURACY_FINE 

od: API Poziom 1 A stała wskazująca wymaganie dokładniejszej dokładności lokalizacji:

Constant Value: 1 (0x00000001) 
Powiązane problemy