Я подозреваю, что шагомеры основаны на акселерометрах, потому что акселерометры дешевле, чем GPS для использования. на самом деле я думаю, что многие шагомеры даже не пытаются измерить расстояние. просто ускорение дребезжит равными шагами. и затем, если они дают вам измерение расстояния, это путем умножения обнаруженных шагов на предполагаемый или средний размер шага.
GPS (если вы находитесь в районе, где он работает!) Сделает очень хорошее измерение расстояния. Даже с очень дешевым GPS-приемником. Все в принципе нормально, вы должны ожидать начальную и конечную позиции с точностью до 10 м, и поэтому для 1 км пути у вас есть 20 м неопределенности, что составляет 2% общей неопределенности расстояния. Эта неопределенность уменьшается линейно с пройденным расстоянием (то есть, пробег 2 км будет иметь неопределенность 1%, пробег 4 км будет иметь неопределенность 0,5%, и т. Д.) Проблемы здесь будут с вашими дисплеями в реальном времени (GPS-положение переходит от переключения спутников, давая огромные значения скорости или немедленная потеря сигнала, приводящая к потере всех немедленно отображаемых данных)
Я думаю, что с хорошим акселерометром, начиная с остановленного, вы можете постоянно интегрировать сигнал, чтобы получить скорость, и непрерывно интегрировать этот результат, чтобы получить расстояние ... Я просто не уверен, какое качество акселерометра вы получаете в любом данном телефоне ? Вам может понадобиться отфильтровать данные по шуму или даже мусору. И вам также нужно подумать, насколько они точны. Точность 20% в вашем датчике создаст очень плохой трекер расстояния. Поэтому вам, возможно, придется работать с подсчетом шагов и предположениями о размере шага.
Может быть, комбинация обоих может работать?
У меня возникнет соблазн использовать данные акселерометра (интегрирование или подсчет шагов в зависимости от того, что всегда будет работать) для отслеживания скорости и расстояния в течение короткого периода времени, а затем с гораздо более длительным периодом можно использовать обобщенные данные GPS для исправления или масштабировать эти данные от акселерометра. Особенно, если вы фильтровали / блокировали данные GPS на основе измерения неопределенности в любой момент времени.