2014-09-17 2 views
1

У меня есть много отличий (~ 20%) между реальной скоростью и скоростью GPS. Но сначала позвольте мне показать мой код:Ошибка 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-приложение, и оно показывает мне правильное значение. Что я сделал не так?

+0

Можете ли вы опубликовать неправильные значения по сравнению с ожидаемыми правильными? – AlexWien

ответ

2

GPS не обеспечивает точные скорости при очень низких скоростях.
При таких низких скоростях различные алгоритмы (с использованием усреднения и т. Д.) Могут сообщать о скорости распространения. Более 10 - 20 км/ч он должен быть очень высоким до 1%. Протестируйте его в автомобиле или поезде, вы должны получить одинаковое значение км/ч для всех устройств GPS, когда поезд работает не менее 50 км/ч.

+0

Да, я просто ехал до 30 км/ч, поэтому скорость GPS была неправильной. Но вчера я езжу на 120, а скорость gps - 112, и я думаю. У кого-нибудь есть идея справиться с более медленными скоростями? В своем мнении мне нужно вызвать диспетчера местоположений, чтобы получить местоположение чаще. Но как я могу это сделать? – ray

+0

На скорости 120 км/ч скорость GPS составляет 0,1 км/ч. Доверьтесь мне. Ваш тахометр вашего автомобиля - это устройство, которое может быть ошибочным примерно на 7%. калиброванный тахометр (полиция) обладает 3% -ной степенью точности. Хорошая идея - взглянуть на навигационное устройство. Вы увидите, что вы всегда будете в пределах 1 км/ч от навигатора. – AlexWien

+1

Медленная скорость: просто игнорируйте их, создайте приложение, чтобы оно не оценивало более низкие скорости. или попробуйте усреднить за последние 5 секунд. – AlexWien

1

location.getSpeed ​​() возвращает скорость в м/с. Если вам это нужно в км/ч, вам понадобится double speed = location.getSpeed()*3.6;.

+0

Коэффициент 3,6 означает 360% не 20%, поэтому этот ответ не должен быть решением – AlexWien

+0

Коэффициент 3,6 означает отказ на 260%, если ваш инвертированный вход и выход составляет ~ 72%. Это не совсем понятно, что означает луч с разницей. Но он явно хочет скорость в км/ч (в своем коде: Константы.KMPH), а getSpeed ​​дает вам м/с. Поэтому, если это не все решение, это, по крайней мере, часть этого. –

+0

У меня был этот фактор уже в методе doubleToStringParser. Извините, что не показывал этот фрагмент кода, так что это должно быть хорошо. – ray

Смежные вопросы