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)