Moderní smartphone není jen výpočetní zařízení, ale sada výkonných senzorů. Kamera, akcelerometr, gyroskop, NFC, skener obličeje — to vše je pro vývojáře dostupné prostřednictvím platformních API. Hardwarové funkce umožňují vytvářet aplikace, které interagují s fyzickým světem: od fitness trackerů po hry s rozšířenou realitou. V tomto článku probereme všechny hlavní senzory a API pro iOS a Android. Další podrobnosti naleznete v oficiální dokumentaci senzorů Android.
Klíčové body
Hardwarové funkce smartphonu zahrnují desítky senzorů, které shromažďují data o prostředí a poloze zařízení. Tato data jsou k dispozici prostřednictvím Sensors API (Android) a Core Motion (iOS). Senzory se dělí do tří kategorií: senzory pohybu (akcelerometr, gyroskop), senzory polohy (magnetometr) a senzory prostředí (barometr, světlo, teplota).
Akcelerometr měří zrychlení zařízení podél tří os (x, y, z) v m/s². Používá se pro: detekci orientace obrazovky (automatické otáčení), počítání kroků (pěší navigace), rozpoznávání gest (třesení pro vrácení zpět), hry s ovládáním náklonem. Android Sensor.TYPE_ACCELEROMETER a Core Motion CMMotionManager (iOS) poskytují surová data s frekvencí až 200 Hz.
Gyroskop měří úhlovou rychlost otáčení zařízení podél tří os (rad/s). Na rozdíl od akcelerometru není gyroskop ovlivněn gravitací, což jej činí ideálním pro sledování otáčení. Aplikace: stabilizace videa, VR/AR aplikace, vnitřní navigace, herní ovladače. Sensor.TYPE_GYROSCOPE (Android) a CMMotionManager (iOS) jsou hlavní API.
Magnetometr měří magnetické pole Země podél tří os (µT) a funguje jako elektronický kompas. Používá se v navigačních aplikacích k určení směru k severu. Magnetometr je citlivý na rušení od kovových předmětů a reproduktorů; je nutná kalibrace (charakteristický pohyb ve tvaru osmičky). Sensor.TYPE_MAGNETIC_FIELD — Android API.
Barometr měří atmosférický tlak (hPa) a používá se k určení nadmořské výšky s přesností až 1 metr. Senzor přiblížení vypíná obrazovku při přiložení telefonu k uchu během hovoru. Senzor okolního světla upravuje jas obrazovky. Všechny tyto senzory jsou přístupné prostřednictvím jednotného SensorManager (Android) nebo CMMotionManager (iOS) pro většinu pohybových senzorů.
Kamera je jednou z nejžádanějších hardwarových součástí. Na Androidu je přístup přes CameraX (moderní Jetpack API) nebo Camera2 (nízkoúrovňové API). CameraX automaticky spravuje životní cyklus, podporuje Preview, ImageCapture, ImageAnalysis (analýza snímků ML) a VideoCapture. Na iOS je kamera k dispozici prostřednictvím AVFoundation: AVCaptureSession spravuje snímání, AVCaptureDevice konfiguruje parametry (ostření, ISO, vyvážení bílé).
Mikrofon se používá pro záznam zvuku, hlasové ovládání a rozpoznávání řeči. Na Androidu — MediaRecorder nebo AudioRecord; na iOS — AVAudioRecorder. Přístup ke kameře a mikrofonu vyžaduje oprávnění uživatele: Manifest.permission.CAMERA a RECORD_AUDIO (Android), NSCameraUsageDescription a NSMicrophoneUsageDescription (iOS) — řetězce v Info.plist popisující důvod použití.
Ve společnosti IT Sectr jsme realizovali více než 20 projektů s vlastními kamerami: od skenerů QR kódů po aplikace s AR filtry. Klíčový závěr: na Androidu CameraX šetří týdny vývoje ve srovnání s Camera2, zatímco na iOS poskytuje AVFoundation plnou kontrolu nad parametry snímání. Příklad základního snímání obrazu přes 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()))
}
}
Biometrické hardwarové funkce umožňují uživatelům přihlásit se do aplikace pomocí otisku prstu nebo obličeje. iOS používá Face ID (kamera TrueDepth, 30 000 neviditelných bodů) a Touch ID (kapacitní snímač otisků prstů). Android používá BiometricPrompt, který kombinuje snímač otisků prstů (kapacitní nebo ultrazvukový) a Face Unlock (kamera + ML). Face ID je bezpečnější než Touch ID: pravděpodobnost shody 1:1 000 000 oproti 1:50 000.
NFC (Near Field Communication) je bezdrátová komunikační technologie s dosahem až 10 cm. Používá se pro: bezkontaktní platby (Google Pay, Apple Pay), čtení NFC tagů (chytré plakáty, vizitky), ověřování (dokumenty, vstupenky), přenos dat (Android Beam — zastaralé). Core NFC (iOS) a NfcAdapter (Android) jsou hlavní API. Na iOS je NFC k dispozici pouze pro čtení (kromě plateb Apple Pay).
Bluetooth/BLE (Bluetooth Low Energy) — pro připojení externích zařízení: sluchátek, fitness náramků, lékařských senzorů, chytrých zámků. Core Bluetooth (iOS) a android.bluetooth (Android) — API pro skenování, připojení a výměnu dat. BLE je energeticky účinný: zařízení může fungovat na baterii po celá léta. Na iOS vyžaduje běh BLE na pozadí povolení Background Modes → Uses Bluetooth LE accessories.
Hardwarové funkce zdraví: HealthKit (iOS) — framework Apple pro agregaci zdravotních dat. Uživatel uděluje oprávnění ke čtení a zápisu konkrétních typů dat: kroky, srdeční tep, spánek, kalorie, váha, krevní tlak. Všechna data jsou uložena v chráněném úložišti a synchronizována přes iCloud. HealthKit poskytuje jednotné rozhraní pro zápis HKQuantitySample a čtení prostřednictvím HKSampleQuery nebo HKStatisticsQuery.
Google Fit — platforma Google pro fitness data na Androidu. API je rozděleno do dvou sad: Sensors API (reálná data ze senzorů zařízení — kroky, kalorie) a History API (čtení/zápis historických dat). Google Fit také agreguje data z jiných fitness aplikací (Strava, Runkeeper) prostřednictvím autorizace. Na iOS je Google Fit k dispozici přes REST API.
Core Motion (iOS) — framework pro práci s pohybovými senzory bez vyhrazeného čipu: akcelerometr, gyroskop, krokoměr (CMPedometer), výškoměr (CMAltimeter). CMPedometer počítá kroky, ušlou vzdálenost, tempo a počet vystoupaných pater. Na Androidu podobné schopnosti poskytují Sensor.TYPE_STEP_COUNTER a Step Detector. Všechna fitness data vyžadují výslovný souhlas uživatele.
Rozšířená realita (AR) a strojové učení na zařízení představují vrchol hardwarových schopností smartphonu. ARKit (Apple, iOS 11+) používá kameru, gyroskop, akcelerometr a LiDAR (na modelech Pro) ke sledování okolního prostoru. ARCore (Google) je ekvivalent pro Android se sledováním rovin, rozpoznáváním obrazu a odhadem osvětlení. Oba frameworky používají Visual Inertial Odometry (VIO) — kombinaci kamery a inerciálních senzorů.
ML Kit (Google) — SDK pro strojové učení na Androidu a iOS. Zahrnuje hotová API: rozpoznávání textu (OCR), skenování čárových kódů, rozpoznávání obličeje, detekci pózy, sledování objektů, rozpoznávání textu v obrázcích a zpracování přirozeného jazyka. ML Kit funguje zcela na zařízení — data nejsou odesílána na server, což zajišťuje soukromí a offline funkčnost.
Core ML (Apple) — framework pro integraci ML modelů do iOS aplikací. Modely (mlmodel) se převádějí z TensorFlow, PyTorch nebo Keras pomocí Core ML Tools. Vision — framework pro počítačové vidění: detekce obličeje, text, čárové kódy, horizontální zarovnání. Kombinace Vision a Core ML umožňuje vytvářet real-time ML pipeline: zachycení snímku → analýza Vision → predikce Core ML → aktualizace UI — vše na zařízení s latencí pod 50 ms.
Často kladené otázky
Moderní smartphone obsahuje akcelerometr, gyroskop, magnetometr (kompas), barometr, senzor přiblížení, senzor okolního světla, snímač otisků prstů, kameru, mikrofon, NFC, Bluetooth, Wi-Fi, GPS. Vlajkové modely mají také LiDAR, monitor srdečního tepu a teplotní senzor.
Face ID je biometrická autentizace obličeje pomocí kamery TrueDepth (projekce 30 000 bodů). Touch ID je autentizace otiskem prstu přes kapacitní snímač. Face ID je bezpečnější (1 ku 1 000 000 oproti 1 ku 50 000) a funguje bez kontaktu.
Moderním přístupem je CameraX (knihovna Jetpack). CameraX zjednodušuje práci s kamerou: automaticky spravuje životní cyklus, podporuje Preview, ImageCapture, ImageAnalysis a VideoCapture. Pro starší projekty se používá Camera2 API.
NFC umožňuje: čtení a zápis NFC tagů (chytré plakáty, vizitky), bezkontaktní platby (Google Pay, Apple Pay), přenos dat mezi zařízeními, ověřování dokumentů, otevírání dveří, používání dopravních karet. Na iOS je NFC k dispozici pouze pro čtení (kromě Apple Pay).
ARKit je framework Apple pro rozšířenou realitu na iOS. ARCore je ekvivalent od Google pro Android. Oba podporují sledování rovin, rozpoznávání obrazu a odhad osvětlení. ARKit používá LiDAR (na iPad Pro/iPhone Pro) pro přesnější určování polohy.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.