Плохая точность в Fused Location API

Я пытаюсь сделать приложение для отслеживания в Android. Я использую Fused Location Api и, как было сказано на многих разных сайтах, я фильтрую местоположения по их точности.

public void onLocationChanged(Location location) {
  if (location.getAccuracy() <= 10.0f && location.hasAccuracy() ) {
    //saveLocation(); or whatever
   }

Код более проработан, он просто отражает идею.

Приложение рисует Polyline, пока я иду, и я получаю местоположение каждые 5 секунд. И если GPS не включен, я говорю пользователю включить его.

Проблема в том (мне не разрешено загружать изображения, поэтому я опишу это), что мой путь/маршрут, линия, странные изгибы, вход внутрь зданий и т. д., и я не знаю, как просто сохранить очередь на улице...

Если я перейду на «старый» API с locationManager и т. д., я получу лучшие местоположения? Или есть другой способ с Fused Location?

Благодарю вас!


person msfogg    schedule 28.04.2015    source источник
comment
Может быть, если я просто проверяю точки каждые больше секунд... линия будет прямее. (но если я изменю направление, он тоже пройдет сквозь здания). Я не вижу решения.   -  person msfogg    schedule 29.04.2015


Ответы (1)


Сигнал GPS обычно довольно «шумный». По моему опыту (в основном с менеджером местоположения), даже когда приемник неподвижен, последовательные измерения GPS могут «прыгать» на целых 10 м. Соединение точек необработанных данных с полилиниями, скорее всего, покажет очень неровный путь.

Мое предложение состоит в том, чтобы быстрее проводить выборку и фильтровать данные. Есть много способов фильтрации. Например, вы можете просто усреднить самые последние значения широты N (и сделать то же самое для долготы) — фильтр «скользящего среднего». Более сложный подход будет использовать знания о вероятных скоростях и изменениях направления (например, фильтрация Калмана).

person NLRicker    schedule 01.06.2015