2010-11-13 2 views
9

Я пытаюсь получить свою текущую точность GPS, используя Location.getAccuracy(). Однако это возвращает 1 (или иногда 2), что не представляется возможным. Карты Google говорят мне, что моя текущая точность местоположения составляет 40 метров.Android Location.getAccuracy() возвращает 1

Любые мысли?

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

ответ

8

От documentation of getAccuracy:

Возвращает точность исправления в метрах.

Почему это не представляется возможным? Возвратное значение 1, иногда 2 метра, отлично подходит для GPS. Имея хорошую силу сигнала и блокируя несколько спутников, вы можете получить такую ​​точность.

(Кроме того, так как вы литье к int вашему полу значения. Точность может быть на самом деле, например, 1,9 м.)

1

40 метров выглядят как точность сотовой сети, но не GPS.

1

У меня обычно есть 6-9 спутников, видимых (Scandinavia) и шириной около 2,0 метров для getAccuracy() - и на практике получается, что на самом деле оно составляет + | - 40 см.

3

Возможно ли, что вы вызываете getAccuracy() на LocationProvider, а не на местоположение? Из документов:

public abstract int getAccuracy() 

С: Уровень API 1 Возвращает константу, описывающую горизонтальную точность этого поставщика. Если поставщик возвращает более тонкое зерно или точное местоположение, возвращается ACCURACY_FINE, в противном случае, если местоположение приблизительное, тогда возвращается ACCURACY_COARSE.

Где ACCURACY_FINE и ACCURACY_COARSE определяются как:

public static final int ACCURACY_COARSE 

С: Уровень API 1 Константа, указывающий приблизительное требование к точности

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

С: Уровень API 1 A константа, указывающая требование более точной точности местоположения

Constant Value: 1 (0x00000001) 
Смежные вопросы