Вимірювання та приладобудування
Створення додатку для відстеження фітнесу з інтеграцією даних датчиків в Ios
Table of Contents
Чому сенсорні дані матриць в фітнес-додатках
Сучасні пристрої iOS впаковують масив датчиків, які можуть виявити рух, розташування та навіть частоту серцевого ритму. Інтеграція цих датчиків в додаток для відстеження фітнесу перетворює сирі апаратні дані в значущі метрики, такі як крокові підрахунки, відстань, пропущені, калорій, і маршрутні карти. За допомогою перетягування в Core Motion і Core Frameworks, розробники можуть створювати додатки, які відчувають інтелектуальний і чуйний, дають користувачам точний зворотний зв'язок на своїх тренуваннях. Крім того, дані датчика дозволяють розширені функції, такі як активність ( класифікації, бігу, їзд, їзд, їзд, їзд, їзд, тренування та живу та живу активність, тренування, тренування, тренування, тренування, тренування, тренування та живу, тренування, тренування, , , тренування та живу, тренування та живу, тренування, тренування та живу, тренування, тренування, тренувальні роботи
Основні датчики Доступні в пристроях iOS
Перед тим як перебрати код, важливо розуміти, які датчики знаходяться у вашому розпорядженні:
- Accelerometer – заходи прискорення сил, які використовуються для виявлення та спрямованості на виявлення кроків.
- Гірокоп] – обертання заходів, що допомагає класифікації та виявлення осені.
- GPS] – забезпечує точне розташування, швидкість та відстеження маршруту.
- Магнітометр] – забезпечує напрямок компас, корисний для навігації.
- Барометр] – заходи, які змінюють висоти, використовуються для підрахунок підлоги та отримання висоти висоти.
- Датчики рівня Хеарт – доступний через Apple Watch або сторонніх пристроїв Bluetooth, інтегрованих через HealthKit або Core Bluetooth.
Кожен датчик вимагає конкретних рам: Core Motion для акселерометра, гіроскопа та магнітометра; Core Місцезнаходження для GPS та барометра; HealthKit для частоти серцевих скорочень та інших даних для здоров’я.
Налаштування навколишнього середовища вашого розвитку
Починайте установку Xcode (доступно з Mac App Store) і створюючи новий проект iOS. Виберіть шаблон і переконайтеся, що у вас є обліковий запис розробника Apple для тестування на реальних пристроях. Дані датчика часто вимагають реального обладнання; тренажери мають обмежену підтримку датчиків (наприклад, відсутність висоти GPS, не реальний шум акселерометра).
У проекті Xcode, ввімкніть необхідні можливості Підпис та підсилювач; Можливості:
- Послуги] – для GPS та моніторингу регіону.
- HealthKit] – якщо планується прочитати / записувати дані про здоров’я.
- Background Modes – перевірка “Поновлення зображень” та “Audio, AirPlay та Picture in Picture” якщо потрібен аудіо зворотній зв’язок.
Додайте відповідні імена та інформацію.plist keys. Наприклад, додайте та з зручними поясненнями.
Запитання про звільнення правого способу
Користувачі все частіше конфіденційності свідомо. Завжди запитайте дозвіл на місці, де ця функція дійсно потрібна, не запустіть. Для дозволу на місцезнаходження, скористайтеся CLLocationManager:
import CoreLocation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
Для даних руху використовуйте CMMotionManager. Зверніть увагу, що дані руху не вимагають явного дозволу користувача (тобто вважається пристроєм-внутрішній), але ви повинні ще пояснити, чому вам потрібно в політиці конфіденційності. Для даних HealthKit необхідно мати дійсний HKHealthStore і викликати . Забезпечити чіткі, лаконічні рядки в Info.plist, щоб побудувати довіру.
Реалізація збору даних датчиків
Збір даних є ядром вашого фітнес-додатку. Нижче ми покриваємо рух і розташування колекції.
Прискорювач і гірокопові дані з Core Motion
Використовуйте CMMotionManager для запуску оновлень. Виберіть інтервал оновлення, який забезпечує точність та термін служби акумулятора. Для підрахунку кроку, 1/50 секунда (20 мс) типово, але для оновлення UI, 1/10 другий є достатнім.
import CoreMotion
let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.1
motionManager.startAccelerometerUpdates(to: .main) { (data, error) in
guard let accelData = data else { return }
// Use accelData.acceleration.x, .y, .z
}
Для гіроскопа і магнітометра існують подібні методи: і . Якщо вам потрібен пристрій ставлення (поворотно до ваги), скористайтеся , який поєднує акселерометр, гіроскоп і магнітометрові дані.
GPS та Місцезнаходження даних з Core Місцезнаходження
Налаштуйте CLLocationManager, щоб отримувати оновлення розташування. Налаштуйте бажану точність на основі активності. Для зовнішніх проходів, підходить; для внутрішнього проходу економить акумулятор.
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5 // meters
locationManager.startUpdatingLocation()
Впровадження делегаційного методу для обробки нових координаторів. Використовуйте горизонтальніAccuracy властивість фільтрувати неякісні читання. Для маршрутної картування, зберігання координаторів разом з таймерами.
Дані датчика обробки в корисні метрики
Дані датчика сирого датчика не відрізняються. Виконується процес обробки, як правило, включає фільтрацію, калібрування та обчислення.
Кроковий розрахунок від Accelerometer
Використовуйте алгоритм пікового виявлення на величині прискорення. Загальний підхід полягає в тому, щоб компute евкліденової норми (sqrt(x2+y2+z2)), застосувати високоточний фільтр для видалення ваги, потім виявити піки над порігом. Для виробництва розглянемо використання вбудованих атомів Apple CMPedometer, який забезпечує максимальні підрахунки і курсант без необхідності в реалізації виявлення себе.
if CMPedometer.isStepCountingAvailable() {
var pedometer = CMPedometer()
pedometer.startUpdates(from: Date()) { (data, error) in
if let steps = data?.numberOfSteps {
// update UI
}
}
}
Аналогічно CMPedometer може забезпечити відстань, темпи, а також підлоги, що заражаються/відхилені.
Класифікація діяльності
Використовуйте CMMotionActivityManager для автоматичного класифікації стану руху користувача (повчання, їзда, велосипед, стаціонарний). Це зменшує необхідність окремих алгоритмів виявлення та забезпечує високий рівень контексту.
let activityManager = CMMotionActivityManager()
activityManager.startActivityUpdates(to: .main) { (activity) in
if activity?.walking == true {
// treat as walking
} else if activity?.running == true {
// treat as running
}
}
Відстань та швидкість від GPS
Розрахунок відстані між точками розташування послідовного за допомогою distance(від:) метод на CLLocation. Сумські відстані, щоб отримати загальну відстань. Швидкість доступна через майно (m/s). Фільтрувати непрограбовані швидкості (наприклад, > 30 м/с для людської діяльності).
Перегляд даних: діаграми та карти
Візуальний зворотний зв'язок зберігає користувачів мотивованих. Для карт маршруту використовуйте MKMapView] і малюємо полілін, що з'єднує записані координати. Для показників продуктивності використовується Charts] (популярна бібліотека відкритого джерела) або Apple Swift Charts (iOS 16+). Показати загальні статистичні дані як середній темп, зони частоти серцевих скорочень і профілю висоти.
import MapKit
let polyline = MKPolyline(coordinates: &coordinates, count: coordinates.count)
mapView.addOverlay(polyline)
Для частоти роботи серця, якщо підключений через HealthKit або Bluetooth, виводьте графік в режимі реального часу за допомогою WKInterfaceGraphic або SwiftUI Chart] view.
Оновлення фону передачі
Програми для фітнесу часто потрібно збирати дані, коли додаток знаходиться на фоні. Увімкнути Background Modes і виберіть «Повчання оновлень». Для безперервного розташування фону використовуйте . Для значного моніторингу змін (частий, акумуляторний дружній), скористайтеся .
Для передачі даних фонові оновлення обмежені. Система може доставити оновлення руху тільки тоді, коли додаток знаходиться в передовій або коротко після оновлення місця. Для підвищення надійності врахуйте використання CLActivityType, встановленого до для позначення системи, яка місцезнаходження даних є проходженими.
Інтеграція даних та інтеграції системи охорони здоров'я
Зберігати дані про тренування персистентно. Варіанти:
- Core Data – добре для складних об’єктів та відносин.
- SQLite] – легкий, прямий контроль SQL.
- UserDefaults – тільки для невеликих налаштувань, не для журналів датчиків.
- HealthKit] – Центральний репозиторій Apple для даних здоров’я. Написання тренувань до HealthKit робить їх доступними для Apple Health та інших додатків.
Щоб інтегрувати HealthKit, перша авторизація запитів для написання даних тренування та читання відповідних зразків (модель, відстань). Потім створюйте HKWorkout об'єкт і зберегти його:
let healthStore = HKHealthStore()
let workout = HKWorkout(activityType: .running, start: startDate, end: endDate, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { (success, error) in
// handle
}
Зразки частоти серцевих скорочень під час тренування можна проводити з одночасним використанням HKAnchoredObjectQuery або HKObserverQuery.
Оптимальне життя батареї та продуктивність
Безперервний датчик використання зливних акумуляторів. Застосовувати ці стратегії:
- Налаштування інтервалів оновлення – Використовуйте нижню частоту для оновлення UI, вище тільки при необхідності.
- Використовувати дистанцію – Для GPS, встановлених до розумного значення (наприклад, 10 метрів).
- Пауза при стаціонарних] – Використання CMMotionActivityManager для виявлення стаціонарних періодів та зупинення оновлення GPS.
- Deferred update – У iOS 6+ можна дозволити оновлення розташування, щоб бути відкладені для економії електроенергії за допомогою .
- Обробка кишенів] – Збір даних в пам'ять та запис на зберігання періодично (наприклад, кожні 10 хвилин).
Тестування та видалення даних датчиків
Тестування на тренажері обмежена. Завжди тестуйте на реальні пристрої для точного акселерометра, GPS та дані частоти серцевих скорочень. Використовуйте Xcode Simulate Location], щоб перевірити вільно керовані маршрути. Для даних руху можна використовувати Core Motion]] інструменти для деbugging в меню розробника на пристрої. Датчики журналу зчитування з таймерами для перевірки правильності. Також тестова поведінка фону, що дозволяє “Background Fetch” та мулюючих умов мережі.
Користувацькі дослідження та конфіденційність
Конфіденційність є критичним. Виконайте правильність використання ] та зберігає чітку політику конфіденційності. Не поділяйте дані датчика без явної згоди. Використовуйте обробку ‐device, де можливо. Для аналітики, анонімізування та сукупності.
До послуг користувачів:
- Навісний екран, який пояснює використання датчиків та переваги.
- Відповідність в режимі реального часу при тренуваннях (аудіо-кіс, хаптичний зворотний зв'язок).
- Можливість переглядати, редагувати та видаляти дані тренування.
- Функціональність офлайн – зберігати дані локально та синхронізації при доступі до мережі.
Майбутні розширення
Враховуйте додавання:
- Інтеграція з Apple Watch для відстеження частоти серцевих скорочень та тренування.
- Модель машинного навчання (Core ML) для розширеного розпізнавання активності.
- Соціальні функції (лідерборди, виклики) за допомогою CloudKit.
- AR-наклад з маршрутів за допомогою ARKit.
Висновок
Створення додатку для відстеження фітнесу з інтеграцією даних датчиків в iOS є корисним викликом. За допомогою важіль Core Motion, Core Location та HealthKit ви можете створити додаток, який забезпечує точний, ефективний інсайтів, по відношенню до конфіденційності користувачів. Зосереджуйте на чистий код, ефективність батареї та безшовний досвід користувача. Починайте невеликий з підрахунками кроку та розташуванням, потім розширюйте частоту серця та передові аналітики. Для офіційної документації зверніться Core Motion], ]Коресне місцезнаходження, а HealthKit