Escritura de una aplicación de registro GPS ~GPS para Android Localización velocidad no fiable
Estoy encontrando los valores devueltos por el método getSpeed()
en Locations
informado por LocationManager
son masivamente poco fiable. Estoy usando LocationManager.GPS_PROVIDER
, filtrando las ubicaciones provistas a través del onLocationChanged
para una mejor precisión. Incluso con niveles de precisión de un solo dígito, la velocidad devuelta es generalmente ridículamente alta. Estamos hablando de hasta 200 mp/h (sí, sé que está conectado en metros/seg) cuando el teléfono está parado.
Estoy probando la misma base de código en dos modelos diferentes de teléfonos Android, ejecutando dos versiones diferentes del sistema operativo, y viendo los mismos problemas, así que espero que esto sea un problema de código.
¿Qué me estoy perdiendo? Intenté promediar ubicaciones durante un período de tiempo, pero no sirvió para nada. ¿Tendré que calcular mis propios valores de velocidad en función de la distancia recorrida/hora? Esto sería decepcionante.
Como verás, no estoy haciendo nada especial: un poco de filtrado para mayor precisión, incluso después de esto, tanto AverageSpeed
como _bestLocation.getSpeed()
son regularmente imposibles de alcanzar, incluso cuando la precisión de la ubicación es buena.
public void onLocationChanged(Location location) {
if (location.getAccuracy() < 25f) {
_recentLocations.add(location);
if (_bestLocation == null || location.getAccuracy() <= _bestLocation.getAccuracy())
_bestLocation = location;
}
if ((_bestLocation != null && _bestLocation.getAccuracy() < 10f && _recentLocations.size() >= 10)
|| _recentLocations.size() >= 25)
{
int Count = 0;
float TotalSpeed = 0f;
float AverageSpeed = 0f;
for (int i = 0; i<_recentLocations.size(); i++) {
if (_recentLocations.get(i).hasSpeed()) {
Count++;
TotalSpeed += _recentLocations.get(i).getSpeed();
}
}
if (Count > 0)
AverageSpeed = TotalSpeed/Count;
}
}
¿Has probado esto en diferentes lugares * * así? En algunos lugares, simplemente no obtendrá una solución de GPS sin importar qué. – Piskvor
Debería haber especificado, estoy obteniendo correcciones muy aceptablemente precisas - 5 - 10 metros típicamente. Los lugares son lo más variados posible: viajes de la oficina a los sitios del cliente y el hogar, etc. –
@DanWray hai, ¿ha solucionado este problema, ahora estoy luchando con lo mismo, podría ayudarme con esto ?. –