Каков наилучший способ рассчитать расстояние, пройденное за период времени? - PullRequest
1 голос
/ 18 июля 2011

Я пытаюсь вычислить расстояние, прошедшее за определенный период времени в приложении для платформы Android.
Каков наилучший способ сделать это?
На данный момент я реализую интерфейс LocationListener.
Я переопределяю метод onLocationChanged

В настоящее время я делаю что-то вроде этого:

public void onLocationChanged(Location location) {
        Log.d("onLocationChanged", "onLocationChanged");


        old_location.set(new_location);
        new_location.set(location);
        totalDistanceElapsed += new_location.distanceTo(old_location);

}
Таким образом, я добавляю расстояние от старой точки местоположения до новой точки местоположения всякий раз, когда вызывается «onLocationChanged». Это правильно? Мне нужно сделать что-нибудь еще? Будет ли это точно? Если нет, как я могу сделать это более точным? спасибо

1 Ответ

3 голосов
/ 18 января 2012

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

Если вы хотите избежать подсчета «джиттера» как движения (то есть, если исправления блуждают медленно из-за неточностей фиксирования GPS, но устройство фактически неподвижно), вы можете установить порог скорости, например, игнорируя скорости ниже определенного уровня, или если курс быстро меняется между исправлениями. Эти пороговые значения, вероятно, будут зависеть от используемого устройства GPS, и некоторые устройства уже имеют встроенную функцию такого типа (то есть, если скорость слишком низкая, они сообщают 0 м / с).

Однако это действительно зависит от устройства. Например, моя ранняя модель Samsung Galaxy I9000 бродит в радиусе 20 метров даже в условиях ясного неба со скоростью около полуметра в секунду, поэтому, если она будет стоять в поле в течение десяти минут, приведенный выше алгоритм сообщит, что он путешествовал 300м.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...