Сучасний смартфон — це не просто обчислювальний пристрій, а набір потужних датчиків і сенсорів. Камера, акселерометр, гіроскоп, NFC, сканер обличчя — все це доступно розробнику через платформені API. Апаратні функції (hardware features) дозволяють створювати додатки, які взаємодіють із фізичним світом: від фітнес-трекерів до ігор з доповненою реальністю. У цій статті розберемо всі основні датчики та API для iOS та Android. Детальніше — у офіційній документації Android Sensors.
Головне
Апаратні функції смартфона включають десятки датчиків, які збирають дані про навколишнє середовище та положення пристрою. Ці дані доступні через Sensors API (Android) та Core Motion (iOS). Датчики поділяються на три категорії: датчики руху (акселерометр, гіроскоп), датчики положення (магнітометр) та датчики середовища (барометр, освітленість, температура).
Акселерометр вимірює прискорення пристрою по трьох осях (x, y, z) у м/с². Використовується для: визначення орієнтації екрана (автоповорот), підрахунку кроків (пішохідна навігація), розпізнавання жестів (струснути для скасування), ігор з керуванням нахилом. Android Sensor.TYPE_ACCELEROMETER та Core Motion CMMotionManager (iOS) надають сирі дані з частотою до 200 Гц.
Гіроскоп вимірює кутову швидкість обертання пристрою по трьох осях (рад/с). На відміну від акселерометра, гіроскоп не чутливий до гравітації, що робить його ідеальним для відстеження поворотів. Застосування: стабілізація відео, VR/AR-додатки, навігація в приміщеннях, ігрові контролери. Sensor.TYPE_GYROSCOPE (Android) та CMMotionManager (iOS) — основні API.
Магнітометр вимірює магнітне поле Землі по трьох осях (мкТл) і працює як електронний компас. Використовується в навігаційних додатках для визначення напрямку на північ. Магнітометр чутливий до перешкод від металевих предметів і динаміків; потрібне калібрування (характерний рух «вісімкою»). Sensor.TYPE_MAGNETIC_FIELD — Android API.
Барометр вимірює атмосферний тиск (гПа) і використовується для визначення висоти над рівнем моря з точністю до 1 метра. Датчик наближення вимикає екран при піднесенні телефона до вуха під час розмови. Датчик освітленості регулює яскравість екрана. Всі ці датчики доступні через єдиний SensorManager (Android) або CMMotionManager (iOS) для більшості датчиків руху.
Камера — один із найзатребуваніших апаратних компонентів. На Android доступ через CameraX (сучасний Jetpack API) або Camera2 (низькорівневий API). CameraX автоматично обробляє життєвий цикл, підтримує Preview, ImageCapture, ImageAnalysis (ML-аналіз кадрів) та VideoCapture. На iOS камера доступна через AVFoundation: AVCaptureSession керує захопленням, AVCaptureDevice налаштовує параметри (фокус, ISO, баланс білого).
Мікрофон використовується для запису звуку, голосового керування та розпізнавання мови. На Android — MediaRecorder або AudioRecord; на iOS — AVAudioRecorder. Для доступу до камери та мікрофона потрібен дозвіл користувача: Manifest.permission.CAMERA та RECORD_AUDIO (Android), NSCameraUsageDescription та NSMicrophoneUsageDescription (iOS) — рядки в Info.plist, що описують причину використання.
В IT Sectr ми реалізували понад 20 проєктів з кастомною камерою: від сканерів QR-кодів до додатків з AR-фільтрами. Ключовий висновок: на Android CameraX економить тижні розробки порівняно з Camera2, а на iOS AVFoundation дає повний контроль над параметрами зйомки. Приклад базового захоплення зображення через CameraX:
class CameraFragment : Fragment() {
private lateinit var imageCapture: ImageCapture
fun startCamera() {
val processCameraProvider =
ProcessCameraProvider.getInstance(requireContext())
processCameraProvider.addListener({
val cameraProvider = processCameraProvider.get()
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.build()
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
cameraProvider.bindToLifecycle(
this, cameraSelector, preview, imageCapture
)
}, ContextCompat.getMainExecutor(requireContext()))
}
}
Апаратні функції біометрії дозволяють користувачеві входити в додаток за відбитком пальця або обличчям. На iOS використовуються Face ID (TrueDepth камера, 30 000 невидимих точок) та Touch ID (ємнісний сканер відбитків). На Android — BiometricPrompt, який об'єднує сканер відбитків (ємнісний або ультразвуковий) та Face Unlock (камера + ML). Face ID безпечніше за Touch ID: ймовірність збігу 1:1 000 000 проти 1:50 000.
NFC (Near Field Communication) — технологія бездротового зв'язку на відстані до 10 см. Використовується для: безконтактних платежів (Google Pay, Apple Pay), читання NFC-міток (розумні плакати, візитівки), верифікації (документи, квитки), передачі даних (Android Beam — застарілий). Core NFC (iOS) та NfcAdapter (Android) — основні API. На iOS NFC доступний лише для читання (за винятком платежів Apple Pay).
Bluetooth/BLE (Bluetooth Low Energy) — для підключення зовнішніх пристроїв: навушників, фітнес-браслетів, медичних сенсорів, розумних замків. Core Bluetooth (iOS) та android.bluetooth (Android) — API для сканування, підключення та обміну даними. BLE енергоефективний: пристрій може працювати від батарейки роками. На iOS для фонової роботи BLE потрібно включити Background Modes → Uses Bluetooth LE accessories.
Апаратні функції здоров'я: HealthKit (iOS) — фреймворк Apple для агрегації даних про здоров'я. Користувач дає дозвіл на читання та запис конкретних типів даних: кроки, пульс, сон, калорії, вага, тиск. Всі дані зберігаються в захищеному сховищі та синхронізуються через iCloud. HealthKit надає єдиний інтерфейс для запису HKQuantitySample та читання через HKSampleQuery або HKStatisticsQuery.
Google Fit — платформа Google для фітнес-даних на Android. API поділяється на два набори: Sensors API (реальні дані з датчиків пристрою — кроки, калорії) та History API (читання/запис історичних даних). Google Fit також агрегує дані з інших фітнес-додатків (Strava, Runkeeper) через авторизацію. На iOS Google Fit доступний через REST API.
Core Motion (iOS) — фреймворк для роботи з датчиками руху без окремого чипа: акселерометр, гіроскоп, крокомір (CMPedometer), альтиметр (CMAltimeter). CMPedometer підраховує кроки, пройдену відстань, темп та кількість підйомів по сходах. На Android аналогічні можливості дають Sensor.TYPE_STEP_COUNTER та Step Detector. Всі фітнес-дані потребують явної згоди користувача.
Доповнена реальність (AR) та машинне навчання на пристрої (on-device ML) — вершина апаратних можливостей смартфона. ARKit (Apple, iOS 11+) використовує камеру, гіроскоп, акселерометр та LiDAR (на Pro-моделях) для трекінгу навколишнього простору. ARCore (Google) — аналог для Android з трекінгом площини, розпізнаванням зображень та оцінкою освітлення. Обидва фреймворки використовують Visual Inertial Odometry (VIO) — комбінацію камери та інерційних датчиків.
ML Kit (Google) — SDK для машинного навчання на Android та iOS. Включає готові API: розпізнавання тексту (OCR), сканування штрих-кодів, розпізнавання облич, визначення пози, відстеження об'єктів, розпізнавання тексту на зображеннях та обробка природної мови. ML Kit працює повністю на пристрої — дані не надсилаються на сервер, що забезпечує конфіденційність та роботу без інтернету.
Core ML (Apple) — фреймворк для інтеграції ML-моделей в iOS-додатки. Моделі (mlmodel) конвертуються з TensorFlow, PyTorch або Keras через Core ML Tools. Vision — фреймворк для комп'ютерного зору: детекція облич, текст, штрих-коди, горизонтальне вирівнювання. Поєднання Vision та Core ML дозволяє будувати real-time ML-пайплайни: захоплення кадру → аналіз Vision → передбачення Core ML → оновлення UI — все на пристрої із затримкою менше 50 мс.
Часто задавані питання
Сучасний смартфон містить акселерометр, гіроскоп, магнітометр (компас), барометр, датчик наближення, датчик освітленості, сканер відбитків, камеру, мікрофон, NFC, Bluetooth, Wi-Fi, GPS. Флагманські моделі також мають LiDAR, пульсометр та датчик температури.
Face ID — біометрична аутентифікація за обличчям з використанням TrueDepth камери (проєкція 30 000 точок). Touch ID — аутентифікація за відбитком пальця через ємнісний сканер. Face ID безпечніший (1 до 1 000 000 проти 1 до 50 000) і працює без контакту.
Сучасний спосіб — CameraX (Jetpack бібліотека). CameraX спрощує роботу з камерою: автоматично керує життєвим циклом, підтримує Preview, ImageCapture, ImageAnalysis та VideoCapture. Для старих проєктів використовується Camera2 API.
NFC дозволяє: читати та записувати NFC-мітки (розумні плакати, візитівки), безконтактні платежі (Google Pay, Apple Pay), передавати дані між пристроями, верифікацію документів, відкриття дверей, транспортні картки. На iOS NFC доступний лише для читання (крім Apple Pay).
ARKit — фреймворк Apple для доповненої реальності на iOS. ARCore — аналог від Google для Android. Обидва підтримують трекінг площини, розпізнавання зображень та оцінку освітлення. ARKit використовує LiDAR (на iPad Pro/iPhone Pro) для більш точного позиціонування.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.