2010-11-13 15 views
9

Estoy tratando de obtener mi precisión actual de GPS utilizando Location.getAccuracy(). Sin embargo, esto devuelve 1 (o a veces 2) que no parece posible. Los mapas de Google me dicen que mi precisión de ubicación actual es de 40 metros.Android Location.getAccuracy() devuelve 1

¿Alguna idea?

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

Respuesta

8

Desde el documentation of getAccuracy:

Devuelve la precisión del punto en metros.

¿Por qué no parece posible? Un valor de retorno de 1, a veces 2 metros, está perfectamente bien para el GPS. Con una buena potencia de señal y bloqueos en múltiples satélites, puede obtener ese tipo de precisión.

(Además, ya que estás echando a un int su suelo el valor. La precisión en realidad puede ser, por ejemplo 1,9 metros.)

1

40 metros se parece más a la precisión de la red celular, pero no GPS.

1

Normalmente tengo 6-9 satélites visibles (Escandinavia) y obtengo alrededor de 2,0 metros para getAccuracy() - y resulta, en la práctica, tener una precisión de + | - 40 cm en realidad.

3

¿Es posible que llame al getAccuracy() en LocationProvider y no en la ubicación? A partir de los documentos:

public abstract int getAccuracy() 

desde: Nivel 1 del API Devuelve una constante de precisión horizontal describiendo de este proveedor. Si el proveedor devuelve un grano más fino o la ubicación exacta, se devuelve ACCURACY_FINE; de lo contrario, si la ubicación es solo aproximada, se devuelve ACCURACY_COARSE.

Dónde ACCURACY_FINE y ACCURACY_COARSE se definen como:

public static final int ACCURACY_COARSE 

desde: API Nivel 1 Una constante que indica un requisito de precisión aproximada

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

desde: API Nivel 1 A constante que indica un requisito de precisión de ubicación más preciso

Constant Value: 1 (0x00000001) 
Cuestiones relacionadas