Современный смартфон — это не просто вычислительное устройство, а набор мощных датчиков и сенсоров. Камера, акселерометр, гироскоп, 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.
Barometer (барометр) измеряет атмосферное давление (гПа) и используется для определения высоты над уровнем моря с точностью до 1 метра. Proximity Sensor (датчик приближения) отключает экран при поднесении телефона к уху во время разговора. Ambient Light Sensor (датчик освещённости) регулирует яркость экрана. Все эти датчики доступны через единый 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, который объединяет сканер отпечатков (capacitive или ultrasonic) и 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 — фреймворк для компьютерного зрения: детекция лиц, текст, штрихкоды, горизонтальное выравнивание. Combine с 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 года. Мы проконсультируем вас и предложим наилучшее решение.