Реалізація трекінгу сну через мобільний додаток
Трекінг сну в мобільному додатку впирається в апаратні обмеження. Акселерометр телефона дає лише базову класифікацію «сон/бадьорість» з точністю фаз нижче 60%. Для медичного класу необхідні носимі датчики, а їх інтеграція потребує роботи з HealthKit на iOS та Health Connect на Android. У цій статті розберемо технічні деталі, алгоритми та підводні камені на основі нашого досвіду (10+ років, понад 50 проектів з трекінгом здоров'я). Зв'яжіться з нами, щоб обговорити ваш проект.
Як працює трекінг сну без носимих пристроїв?
Телефон на матрасі: акселерометр фіксує рухи тіла. Завдання — класифікувати епохи. Ми використовуємо запис на 10 Гц (оптимально для батареї). Кожні 30 секунд рахуємо активність як суму модулів дельт прискорення. Якщо activity_count < порога — SLEEP, інакше WAKE. Поріг підбирається калібруванням перші 3–7 ночей зі зворотним зв'язком користувача.
На одному проекті ми зіткнулися з проблемою: алгоритм розбивав сесії при нічних пробудженнях користувача. Після об'єднання сесій з перервою до 30 хвилин retention виріс на 15%. Це показує важливість врахування поведінки користувача.
Без ЧСС та температури фази сну (REM, глибокий, легкий) визначаються з точністю <60%. Якщо продукт претендує на медичний клас — потрібен носимий датчик. Носимі датчики підвищують точність фаз сну в 1.5 рази завдяки даним пульсу та температури.
Як працює розумний будильник?
Розумний будильник пробуджує в легку фазу сну. У заданому часовому вікні додаток у фоні аналізує акселерометр. iOS: через HKCategorySample не реалізувати, але можна використовувати BackgroundTask. Android: використовуємо AlarmManager.setAlarmClock() для гарантованого спрацювання в Doze mode. Алгоритм: кожні 30 секунд перевіряємо activity_count, якщо два послідовних відліки перевищують поріг — вважаємо, що користувач у легкій фазі, і спрацьовує будильник.
Чому носимі датчики точніші?
Apple Watch автоматично записує сон через власні алгоритми — акселерометр, ЧСС, шкірна температура (починаючи з останніх моделей). Результат — у HealthKit як HKCategoryValueSleepAnalysis. Android — через Health Connect:
let sleepType = HKObjectType.categoryType(forIdentifier: .sleepAnalysis)! let query = HKSampleQuery( sampleType: sleepType, predicate: HKQuery.predicateForSamples(withStart: startDate, end: endDate), limit: HKObjectQueryNoLimit, sortDescriptors: [NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: true)] ) { _, samples, _ in guard let samples = samples as? [HKCategorySample] else { return } samples.forEach { sample in switch sample.value { case HKCategoryValueSleepAnalysis.asleepCore.rawValue: // легкий case HKCategoryValueSleepAnalysis.asleepDeep.rawValue: // глибокий case HKCategoryValueSleepAnalysis.asleepREM.rawValue: // REM case HKCategoryValueSleepAnalysis.awake.rawValue: // пробудження default: break } } } val response = healthConnectClient.readRecords( ReadRecordsRequest( recordType = SleepSessionRecord::class, timeRangeFilter = TimeRangeFilter.between(startTime, endTime) ) ) response.records.forEach { session -> session.stages.forEach { stage -> when (stage.stage) { SleepSessionRecord.STAGE_TYPE_DEEP -> { /* глибокий */ } SleepSessionRecord.STAGE_TYPE_REM -> { /* REM */ } SleepSessionRecord.STAGE_TYPE_LIGHT -> { /* легкий */ } SleepSessionRecord.STAGE_TYPE_AWAKE -> { /* пробудження */ } } } } Що входить у роботу?
При замовленні під ключ ви отримуєте: розробку алгоритмів збору та аналізу даних з акселерометра, інтеграцію HealthKit (iOS) та Health Connect (Android), розумний будильник з вікном пробудження, панель статистики з графіками фаз сну, калібрувальний модуль для перших ночей, документацію та навчання вашої команди. Фінансові витрати на розробку залежать від обраного стеку та обсягу інтеграцій. Завдяки оптимізації алгоритмів ми скорочуємо час занурення на 20%, що знижує вартість впровадження.
Деталі калібрування
Калібрування порогу activity_count проводиться на основі перших 3–7 ночей. Користувач підтверджує час сну та пробудження, і алгоритм підлаштовується під його індивідуальні патерни рухів.Порівняння підходів
| Параметр | Без носимого | З носимим |
|---|---|---|
| Точність фаз | <60% | ~85-90% |
| Джерело даних | Акселерометр | ЧСС + акселерометр + температура |
| Вимоги до пристрою | Будь-який смартфон | Носимий гаджет |
| Вартість розробки | Нижча | Вища |
| Використання | Масовий продукт | Медичний / преміум |
Типові помилки
Ми часто бачимо три поширені помилки. Перша — розрив сну: користувач встав вночі на 20 хвилин, алгоритм створює дві окремі сесії. Рішення — об'єднувати сесії, якщо перерва менше 30 хвилин. Друга — переведення часу: зберігайте часові мітки в UTC, локальний час — тільки для відображення, інакше статистика поїде при зміні часового поясу. Третя — короткі сесії: відфільтровуйте «сон» коротше 30 хвилин, щоб виключити денний відпочинок та хибні спрацьовування.
Терміни та етапи
| Етап | Тривалість |
|---|---|
| Аналітика та проектування | 1-2 тижні |
| Розробка алгоритмів та UI | 2-3 тижні |
| Інтеграція HealthKit/Health Connect | 1-2 тижні |
| Тестування та калібрування | 1-2 тижні |
| Деплой та підтримка | 1 тиждень |
Базовий трекер з акселерометром і будильником — 3–5 тижнів. З інтеграцією носимих датчиків, фазами сну та просунутою аналітикою — 6–10 тижнів.
Наші інженери мають 10+ років досвіду та реалізували понад 50 проектів з HealthKit та Health Connect. Ми працюємо з задачами будь-якої складності — від MVP до масштабованого продукту. Гарантуємо дотримання термінів та якості.
Отримайте консультацію технічного спеціаліста та оцінку вашого проекту за 1 день. Замовте розробку трекінгу сну — пишіть, ми підберемо оптимальне рішення під ваш бюджет та терміни.







