У мене є багато відмінностей (~ 20%) між реальною швидкістю і швидкістю GPS. Але спочатку дозвольте мені показати мій код:
private LocationManager locationMgr;
private String locationProvider;
...
// Location Manager for GPS
this.locationMgr = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
this.locationProvider = locationMgr.getBestProvider(criteria, false);
this.locationMgr.requestLocationUpdates(this.locationProvider, 0, 1.0f, this);
У слухачеві розташування:
@Override
public void onLocationChanged(Location location) {
// Get speed from location
this.speed = location.getSpeed();
// Set speed TextView
this.gpsVelo.setText(Helper.doubleToStringParser(this.speed, Constants.KMPH, null));
}
У результаті я отримую швидкість, відмінну відшвидкість, яку показує моя машина. Я знаю, що спідометр + 3-5% в автомобілі, але я отримав 20% і більше. Тому я тестував з іншим GPS-App, і він показує мені правильне значення. Що я зробив неправильно?
Відповіді:
2 для відповіді № 1GPS не забезпечує точні швидкості при дуже низьких значеннях швидкості.
При цьому низькі швидкості, різні алгоритми (використанняусереднення тощо) може повідомляти про швидкості відмінності. Понад 10 - 20 км / год вона повинна бути дуже акуратною до 1%. Протестуйте його в автомобілі або поїзді, ви повинні отримати таке ж інтегральне значення км / год для всіх пристроїв GPS, коли поїзд проходить не менше 50 км / год.
1 для відповіді № 2
location.getSpeed () повертає швидкість в м / с. Якщо вам це потрібно в км / год вам знадобиться double speed = location.getSpeed()*3.6;
.