2010-11-13 3 views
9

zurück Ich versuche, meine aktuelle GPS-Genauigkeit zu erhalten, indem Sie Location.getAccuracy() verwenden. Dies gibt jedoch 1 (oder manchmal 2) zurück, was nicht möglich scheint. Google Maps sagt mir, dass meine aktuelle Standortgenauigkeit 40 Meter beträgt.Android Location.getAccuracy() gibt 1

Irgendwelche Gedanken?

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

Antwort

8

Vom documentation of getAccuracy:

Gibt die Genauigkeit der fix in Metern.

Warum scheint es nicht möglich? Ein Rückgabewert von 1, manchmal 2 Meter, ist perfekt für GPS. Mit einer guten Signalstärke und Sperren für mehrere Satelliten können Sie diese Genauigkeit erreichen.

(Außer, da Sie den Wert auf ein int Ihre Fußboden sind zu werfen. Die Genauigkeit zum Beispiel tatsächlich kann 1,9 Meter.)

1

40 Meter sehen mehr wie Mobilfunknetz Genauigkeit, aber nicht GPS.

1

Normalerweise habe ich 6-9 Sateliten sichtbar (Skandinavien) und erreiche ca. 2,0 Meter für getAccuracy() - und in der Praxis erweist es sich in der Realität als ca. + | - 40 cm genau.

3

Ist es möglich, dass Sie getAccuracy() auf dem LocationProvider aufrufen und nicht den Standort? Aus der Dokumentation:

public abstract int getAccuracy() 

seit: API Stufe 1 Gibt eine Konstante beschreiben horizontale Genauigkeit dieser Anbieter. Wenn der Anbieter feineres Getreide oder den genauen Standort zurückgibt, wird ACCURACY_FINE zurückgegeben. Wenn der Standort nur ungefähr ist, wird ACCURACY_COARSE zurückgegeben.

Wo ACCURACY_FINE und ACCURACY_COARSE sind definiert als:

public static final int ACCURACY_COARSE 

Seit: API Stufe 1 Eine Konstante, die angibt eine ungefähre Genauigkeitsanforderung

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

Seit: API Stufe 1 A Konstante, die eine genauere Genauigkeit der Ortsgenauigkeit anzeigt

Constant Value: 1 (0x00000001)