Pedometer в мобильных приложениях: что это такое, как работает и где применяется

Автор: IT Sectr Опубликовано: 2026-03-25 Время чтения: 8 мин

Pedometer (шагомер) в мобильных приложениях — это программно-аппаратный механизм подсчёта шагов пользователя на основе данных акселерометра и гироскопа. Современные смартфоны используют алгоритмы машинного обучения в сочетании с сенсорами для точного определения ходьбы, бега и других видов физической активности. По данным Apple HealthKit Documentation, 2025, точность подсчёта шагов на современных устройствах достигает 95–97% при нормальной ходьбе.

Главное

  • Pedometer (шагомер) — функция подсчёта шагов на основе анализа данных с акселерометра, гироскопа и алгоритмов машинного обучения.
  • Современные алгоритмы шагомера способны различать ходьбу, бег и подъём по лестнице, автоматически определяя тип активности пользователя.
  • Основной сенсор для подсчёта шагов — акселерометр, регистрирующий ускорение по трём осям при каждом шаге.
  • На iOS разработчики получают доступ к шагомеру через CMPedometer из Core Motion, на Android — через Sensor API с TYPE_STEP_COUNTER.
  • Точность подсчёта шагов зависит от расположения устройства: шагомер точнее всего работает при ношении смартфона в кармане брюк или на поясе.

Что такое шагомер в мобильном приложении?

Шагомер (pedometer) в мобильных приложениях — это функция, определяющая количество шагов пользователя на основе данных, поступающих с встроенных датчиков движения смартфона. В отличие от механических шагомеров прошлого, мобильный pedometer использует микроэлектромеханические сенсоры (MEMS) и алгоритмы цифровой обработки сигналов для точного подсчёта локомоций. Современные реализации не просто считают шаги, но и классифицируют активность: ходьба, бег, подъём по лестнице.

Интеграция шагомера в мобильные устройства стала возможной благодаря появлению в 2013 году сопроцессора движения M7 в iPhone 5s, который непрерывно собирал данные с датчиков при минимальном энергопотреблении. Сегодня все современные смартфоны имеют аппаратную поддержку подсчёта шагов на уровне сенсорного хаба — выделенного чипа, обрабатывающего данные инерциальных датчиков без пробуждения основного процессора.

Как работает подсчёт шагов на смартфоне

Подсчёт шагов на смартфоне основан на анализе сигналов акселерометра, который измеряет ускорение устройства по трём перпендикулярным осям (X, Y, Z). При ходьбе каждый шаг создаёт характерный паттерн ускорения: сначала пик вверх при подъёме ноги, затем пик вниз при приземлении. Частота шагов (каденс) составляет 100–130 шагов/мин для ходьбы и 150–180 шагов/мин для бега, а амплитуда ускорения — 2–6 м/с².

Обработка сигнала акселерометра

Сырой сигнал с акселерометра содержит шумы и высокочастотные помехи, поэтому первый этап обработки — фильтрация нижних частот (low-pass filter) с частотой среза 3–5 Гц. После фильтрации вычисляется вектор ускорения: a = sqrt(x² + y² + z²), выделяющий ускорение, связанное с движением, независимо от ориентации устройства. Затем алгоритм обнаруживает локальные максимумы в сигнале — каждый максимум соответствует одному шагу.

Для уменьшения ложных срабатываний (например, при тряске в транспорте) применяются дополнительные критерии: минимальная амплитуда шага (обычно >1,2 м/с²), минимальный интервал между шагами (300–400 мс для ходьбы) и проверка периодичности сигнала через автокорреляцию. Если временные интервалы между пиками нерегулярны, последовательность маркируется как случайные движения и не засчитывается как шаги.

Детекция шагов через акселерометр

Базовый алгоритм детекции шагов использует метод порогового обнаружения: система ищет моменты, когда сигнал акселерометра превышает заданный порог и затем возвращается к уровню покоя. Каждое такое событие считается потенциальным шагом. Существуют два подхода: детекция пиков (peak detection) и пересечение нуля (zero-crossing). Детекция пиков фиксирует максимумы сигнала, а zero-crossing — моменты перехода сигнала через среднее значение, что меньше зависит от амплитуды шага.

Пороговые методы и адаптивные алгоритмы

Современные алгоритмы подсчёта шагов используют адаптивный порог, который автоматически подстраивается под стиль ходьбы пользователя. Система анализирует дисперсию сигнала за последние 2–3 секунды и вычисляет динамический порог как среднеквадратичное отклонение (RMS) умноженное на коэффициент. Это позволяет корректно считать шаги как при медленной прогулке, так и при энергичном беге без перекрёстной калибровки между видами активности.

Алгоритмы подсчёта шагов и машинное обучение

Современные реализации шагомера используют не только детекцию пиков, но и машинное обучение для классификации паттернов движения. Нейросетевые модели обучаются на тысячах часов записей реальных движений из разных сценариев: ходьба по ровной поверхности, подъём по лестнице, бег, езда в транспорте. Входными признаками служат временные ряды акселерометра и гироскопа, а выходом — вероятность того, что текущий сегмент сигнала соответствует локомоции человека.

Нейросетевые модели для классификации активности

По данным исследования Google Activity Recognition, модели на основе свёрточных нейросетей (CNN) достигают точности распознавания ходьбы 98% на контрольных наборах данных. На устройствах Apple используется Core ML с моделью Activity Classification, обученной на данных более 100 тысяч добровольцев. Оптимизированные модели работают непосредственно на устройстве (on-device inference), что обеспечивает мгновенную обработку и сохранение приватности пользователя.

swift
import CoreMotion

class PedometerObserver {
    private let pedometer = CMPedometer()

    func startTracking() {
        guard CMPedometer.isStepCountingAvailable() else { return }
        
        pedometer.startUpdates(from: Date()) { data, error in
            guard let data = data else { return }
            
            let steps = data.numberOfSteps.intValue
            let distance = data.distance?.doubleValue
            let floorsAscended = data.floorsAscended?.intValue
            
            // Обновление UI с количеством шагов
            DispatchQueue.main.async {
                // self.stepsLabel.text = "\(steps) шагов"
            }
        }
    }

    func stopTracking() {
        pedometer.stopUpdates()
    }
}

Шагомер на iOS и Android: API и возможности

На iOS для доступа к шагомеру используется класс CMPedometer из фреймворка Core Motion. CMPedometer предоставляет не только количество шагов, но и пройденное расстояние, количество этажей (подъёмов), темп ходьбы и время активности. Данные доступны как в реальном времени (startUpdates), так и за произвольный период в прошлом (queryPedometerData). Сопроцессор движения (M-серии) обрабатывает данные датчиков аппаратно, что снижает энергопотребление на 80% по сравнению с программной обработкой.

На Android работа с шагомером реализована через два аппаратных датчика: TYPE_STEP_COUNTER (кумулятивный счётчик шагов с момента загрузки) и TYPE_STEP_DETECTOR (генерация события на каждый шаг). TYPE_STEP_COUNTER не требует калибровки и не потребляет энергию процессора — данные обновляются аппаратно на уровне сенсорного хаба. Для доступа к накопленной статистике шагов за день используется Google Fit API с записью DataType.TYPE_STEP_COUNT_DELTA.

kotlin
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager

class StepCounter(
    private val sensorManager: SensorManager
) : SensorEventListener {

    private var totalSteps = 0
    private var previousSteps = -1

    fun startListening() {
        val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
        sensor?.let {
            sensorManager.registerListener(this, it, SensorManager.SENSOR_DELAY_NORMAL)
        }
    }

    override fun onSensorChanged(event: SensorEvent) {
        if (previousSteps < 0) {
            previousSteps = event.values[0].toInt()
        }
        val currentSteps = event.values[0].toInt()
        totalSteps = currentSteps - previousSteps
    }

    fun getStepCount(): Int = totalSteps

    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}

Точность и ограничения мобильного шагомера

Точность шагомера зависит от нескольких факторов: расположения смартфона (в руке, кармане или сумке), типа активности (ходьба, бег, подъём по лестнице) и качества сенсоров. При ношении смартфона в кармане брюк точность составляет 93–97%, в сумке или рюкзаке падает до 70–85%. На точность также влияет стиль ходьбы пользователя: семенящая походка с малой амплитудой ускорений даёт больше ошибок, чем размеренная ходьба.

Основные ограничения мобильных шагомеров включают: невозможность подсчёта шагов при очень медленном движении (<1,5 км/ч), ложные срабатывания от поездки в транспорте, снижение точности при беге на низкой скорости (трусца) и влияние жестикуляции при разговоре. Для минимизации ошибок современные приложения используют комбинацию сенсоров (акселерометр + гироскоп + барометр) и машинное обучение для отсеивания артефактов. Барометр, например, помогает определять подъём по лестнице и изменение высоты, исключая ложные шаги на лифте.

Часто задаваемые вопросы

Как работает шагомер в телефоне?

Шагомер в телефоне использует акселерометр, фиксирующий ускорение при каждом шаге. Алгоритм анализирует пики ускорения по трём осям, фильтрует шумы и определяет количество шагов. Современные модели также используют гироскоп и машинное обучение для повышения точности и классификации активности.

Насколько точен шагомер на смартфоне?

При ношении смартфона в кармане брюк точность достигает 95–97% при обычной ходьбе. В сумке или рюкзаке точность снижается до 70–85%. На точность влияет также стиль ходьбы и тип поверхности — неровный рельеф может давать погрешности до 10–15%.

Может ли шагомер работать без интернета?

Да, шагомер работает полностью автономно без подключения к интернету. Все вычисления выполняются на устройстве с использованием встроенных датчиков. Интернет может потребоваться только для синхронизации данных с облачными сервисами фитнес-приложений или для отображения карты маршрута.

Почему шагомер на разных приложениях показывает разные цифры?

Разные приложения используют различные алгоритмы обработки данных сенсоров, пороги детекции шагов и методы фильтрации. Некоторые приложения считают шаги на основе сырых данных акселерометра, другие — через системные API (TYPE_STEP_COUNTER), и разница в подсчётах может достигать 10–15%.

Как получить доступ к шагомеру в приложении Android?

На Android для доступа к шагомеру используйте датчик TYPE_STEP_COUNTER через Sensor API — он предоставляет кумулятивное количество шагов с момента последней перезагрузки устройства. Для доступа к шагам за конкретный день интегрируйте Google Fit API с типом данных TYPE_STEP_COUNT_DELTA.

Итоги

  • Pedometer (шагомер) — функция мобильных устройств, определяющая количество шагов на основе данных MEMS-акселерометра и алгоритмов машинного обучения.
  • Основной метод подсчёта шагов — детекция пиков и пересечение нуля в сигнале акселерометра с последующей фильтрацией артефактов и адаптивным порогом.
  • Современные реализации используют свёрточные нейросети для классификации ходьбы, бега и подъёма по лестнице с точностью до 98%.
  • На iOS доступ к шагомеру осуществляется через CMPedometer (Core Motion), на Android — через TYPE_STEP_COUNTER и Google Fit API.
  • Аппаратный подсчёт шагов на уровне сенсорного хаба не пробуждает основной процессор, потребляя на 80% меньше энергии по сравнению с программной обработкой.
  • Точность шагомера зависит от расположения устройства: в кармане брюк — до 97%, в сумке — 70–85%. Неровный рельеф и медленная ходьба также снижают точность.
  • Для минимизации ошибок применяется комбинация датчиков: акселерометр + гироскоп + барометр, что позволяет отсеивать ложные шаги при езде в транспорте и определять подъём по лестнице.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также