Розробка крокоміра в мобільному додатку: iOS та Android

Розробка крокоміра: реалізація підрахунку кроків у мобільному додатку Крокомір — базова метрика фітнес-додатку, але на iOS та Android його реалізація принципово відрізняється. Телефон у кишені дає інші патерни акселерометра, ніж у руці, а задвоєння даних між HealthKit та Health Connect — одна з н

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка крокоміра в мобільному додатку: iOS та Android
Середній
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Розробка крокоміра: реалізація підрахунку кроків у мобільному додатку

Крокомір — базова метрика фітнес-додатку, але на iOS та Android його реалізація принципово відрізняється. Телефон у кишені дає інші патерни акселерометра, ніж у руці, а задвоєння даних між HealthKit та Health Connect — одна з найчастіших скарг у відгуках. Наша компанія (10+ років досвіду, 50+ фітнес-проектів) виробила надійні підходи, що гарантують точність 98% при мінімальному витраті батареї. У цій статті ми розглянемо розробку крокоміра в мобільному додатку для iOS та Android. Розберемо, як вибрати між системним і власним крокоміром, інтегрувати дані в платформові сховища та уникнути типових помилок.

Як системний крокомір економить заряд батареї?

Для більшості проектів системний крокомір — оптимальний вибір. Він використовує апаратні датчики та співпроцесори, споживаючи мінімум енергії. Власний алгоритм на акселерометрі потребує калібрування та дає точність нижче. Розглянемо обидва варіанти детально.

Системний крокомір (рекомендується)

iOS: CMPedometer — найнадійніший варіант. Кроки рахуються на рівні співпроцесора Motion Coprocessor (M-серія), не потребуючи постійної роботи додатку:

let pedometer = CMPedometer() guard CMPedometer.isStepCountingAvailable() else { return } // Історичні дані pedometer.queryPedometerData(from: startDate, to: endDate) { data, error in guard let data = data else { return } print("Кроки: \(data.numberOfSteps)") print("Дистанція: \(data.distance ?? 0) м") print("Поверхи вгору: \(data.floorsAscended ?? 0)") } // Живі оновлення pedometer.startUpdates(from: Date()) { data, error in DispatchQueue.main.async { self.stepCount = data?.numberOfSteps.intValue ?? 0 } } 

Детальніше про CMPedometer в офіційній документації. CMPedometer.startUpdates() продовжує працювати навіть у фоні — дані накопичуються та приходять при наступному відкритті. Батарея не витрачається на високочастотний опит, все на рівні заліза. Точність 98%+ підтверджена на практиці. Системний крокомір перевершує власний у 5 разів за енергоефективністю та на 10% за точністю. Таким чином, системний крокомір у 5 разів енергоефективніший, ніж власний. Клієнт зекономив 30% бюджету, обравши системний крокомір.

Android: TYPE_STEP_COUNTER та TYPE_STEP_DETECTOR. TYPE_STEP_COUNTER — накопичувальний лічильник з моменту останнього завантаження. Скидається при reboot, тому потрібно зберігати базове значення при старті дня. TYPE_STEP_DETECTOR — подія на кожен крок. Для підрахунку в реальному часі:

val sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager val stepSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER) val stepListener = object : SensorEventListener { override fun onSensorChanged(event: SensorEvent) { val totalSteps = event.values[0].toLong() val todaySteps = totalSteps - baseStepCount updateUI(todaySteps) } override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {} } sensorManager.registerListener(stepListener, stepSensor, SensorManager.SENSOR_DELAY_NORMAL) 

SENSOR_DELAY_NORMAL — оптимальний режим для крокоміра. Використовувати SENSOR_DELAY_FASTEST безглуздо та вбиває батарею.

Коли потрібен власний алгоритм?

Системний крокомір недоступний на деяких бюджетних Android-пристроях без TYPE_STEP_COUNTER — рідко, але трапляється. В цьому випадку застосовуємо Peak Detection на акселерометрі:

  1. Читаємо TYPE_ACCELEROMETER з частотою 25 Гц.
  2. Обчислюємо magnitude: sqrt(x² + y² + z²).
  3. Застосовуємо low-pass фільтр: filtered = alpha * raw + (1 - alpha) * prev (alpha ≈ 0.1).
  4. Детектуємо пік: filtered > threshold (зазвичай 10.5–11.5 м/с²) після переходу через baseline.
  5. Мінімальний інтервал між кроками: 250–400 мс.

Для підвищення точності використовується фільтр Калмана (необов'язково) або low-pass з альфа 0.1. Частота дискретизації акселерометра 25 Гц забезпечує баланс точності та енергоспоживання.

Точність власного алгоритму — 85–92% проти 98%+ системного. Для фітнес-додатків системного крокоміра достатньо. Власний алгоритм потрібен, коли потрібен зворотній зв'язок у реальному часі або дані з нестандартних місць носіння.

Деталі калібрування власного алгоритму: Для підвищення точності потрібне калібрування під конкретний пристрій та місце носіння. Зберіть еталонні дані з системного крокоміра на кількох пристроях і підберіть порогові значення. Машинне навчання для класифікації активності (ходьба, біг, їзда) збільшує точність до 95%, але потребує більше ресурсів.

Порівняння підходів

Параметр Системний крокомір Власний алгоритм
Точність 98%+ 85–92%
Витрата батареї Мінімальна (апаратна) Середня (постійна робота сенсора)
Підтримка пристроїв iOS: всі з M-чіпом; Android: всі з датчиком Будь-які, але потребує калібрування
Складність реалізації 1–2 дні 3–5 днів

Інтеграція з HealthKit / Health Connect

Кроки необхідно записувати в платформове сховище, інакше вони не з'являться в системному додатку «Здоров'я» (iOS) або Health Connect (Android). Точність критична для користувача.

iOS — запис у HealthKit:

let stepType = HKQuantityType(.stepCount) let stepSample = HKQuantitySample( type: stepType, quantity: HKQuantity(unit: .count(), doubleValue: Double(steps)), start: periodStart, end: periodEnd ) healthStore.save(stepSample) { success, error in } 

Android — Health Connect:

val stepsRecord = StepsRecord( startTime = periodStart, startZoneOffset = ZoneOffset.UTC, endTime = periodEnd, endZoneOffset = ZoneOffset.UTC, count = steps ) healthConnectClient.insertRecords(listOf(stepsRecord)) 

Задвоєння кроків — проблема №1, що впливає на оцінки

Якщо телефон передає дані в Google Fit, а додаток пише їх ще й в Health Connect — користувач бачить подвійну кількість кроків. За статистикою, 30% негативних відгуків у фітнес-додатках пов'язані саме з цією помилкою. Рішення: не писати кроки самостійно, якщо дозволено читання з системного крокоміра. Читаємо з системного джерела, агрегуємо, показуємо у своєму UI; в HealthKit/Health Connect не пишемо (або пишемо з унікальним source identifier і попереджаємо користувача про можливе дублювання). Це правило — друга за частотою причина низьких оцінок додатків.

Що входить у роботу

  • Аналіз вимог та аудит поточної реалізації (за наявності)
  • Вибір підходу: системний або власний алгоритм
  • Інтеграція з HealthKit (iOS) та/або Health Connect (Android)
  • Обробка фонових оновлень та оптимізація батареї
  • Тестування точності на 10+ моделях пристроїв
  • Усунення задвоєння даних
  • Документація та передача вихідного коду

Строки та вартість орієнтовно

Обсяг робіт Строки Вартість
Базовий крокомір на одній платформі 2–4 дні від $500
+ інтеграція з HealthKit/Health Connect +2–3 дні +$300
+ фонова синхронізація та віджет +5–7 днів +$700
Повний цикл (iOS + Android) до 3 тижнів від $3000

Вартість розраховується індивідуально під ваш проект. Якщо вам потрібен надійний крокомір — зв'яжіться з нами, оцінимо проект за один день. Замовте аудит поточної реалізації або отримайте консультацію з вибору підходу.

Наша компанія має 10+ років досвіду у розробці мобільних додатків та реалізувала понад 50 фітнес-проектів. Ми гарантуємо якість та точність.