studio manager gps_provider example developer current java android gps

java - manager - gps_provider android studio



Android Location.getAccuracy() devuelve 1 (4)

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

Estoy tratando de obtener mi precisión GPS actual usando 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.

¿Alguna idea?

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


De la documentación de getAccuracy :

Devuelve la precisión de la corrección 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, dado que estás transfiriendo a un int Tu suelo el valor. La precisión puede ser, por ejemplo, de 1,9 metros).


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


¿Es posible que llame a getAccuracy() en LocationProvider y no a Location? De los documentos:

public abstract int getAccuracy ()

Dado que: API Nivel 1 Devuelve una constante que describe la precisión horizontal 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 .

Donde ACCURACY_FINE y ACCURACY_COARSE se definen como:

public static final int ACCURACY_COARSE

Dado que: API Nivel 1 Una constante que indica un requisito de precisión aproximado

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

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

Constant Value: 1 (0x00000001)