En modern smartphone är inte bara en beräkningsenhet, utan en samling kraftfulla sensorer. Kamera, accelerometer, gyroskop, NFC, ansiktsskanner — allt detta är tillgängligt för utvecklare via plattformens API:er. Hårdvarufunktioner gör det möjligt att skapa applikationer som interagerar med den fysiska världen: från fitnesstrackers till augmented reality-spel. I den här artikeln kommer vi att täcka alla huvudsakliga sensorer och API:er för iOS och Android. För mer information, se officiella Android Sensors dokumentation.
Huvudpunkter
Smartphonens hårdvarufunktioner inkluderar dussintals sensorer som samlar in data om miljön och enhetens position. Dessa data är tillgängliga via Sensors API (Android) och Core Motion (iOS). Sensorerna delas in i tre kategorier: rörelsesensorer (accelerometer, gyroskop), positionssensorer (magnetometer) och miljösensorer (barometer, ljus, temperatur).
Accelerometern mäter enhetens acceleration längs tre axlar (x, y, z) i m/s². Den används för: detektering av skärmorientering (auto-rotera), stegräkning (fotgängarnavigering), gestigenkänning (skaka för att ångra), lutningsstyrda spel. Android Sensor.TYPE_ACCELEROMETER och Core Motion CMMotionManager (iOS) tillhandahåller rådata upp till 200 Hz.
Gyroskopet mäter vinkelhastigheten för enhetens rotation längs tre axlar (rad/s). Till skillnad från accelerometern påverkas inte gyroskopet av gravitationen, vilket gör det idealiskt för att spåra rotationer. Tillämpningar: videostabilisering, VR/AR-applikationer, inomhusnavigering, spelkontroller. Sensor.TYPE_GYROSCOPE (Android) och CMMotionManager (iOS) är de huvudsakliga API:erna.
Magnetometern mäter jordens magnetfält längs tre axlar (µT) och fungerar som en elektronisk kompass. Den används i navigationsapplikationer för att bestämma riktningen mot norr. Magnetometern är känslig för störningar från metallföremål och högtalare; kalibrering krävs (den karakteristiska åttasiffriga rörelsen). Sensor.TYPE_MAGNETIC_FIELD — Android API.
Barometern mäter atmosfärstrycket (hPa) och används för att bestämma höjden över havet med en noggrannhet på upp till 1 meter. Närhetssensorn stänger av skärmen när telefonen hålls mot örat under ett samtal. Omgivningsljussensorn justerar skärmens ljusstyrka. Alla dessa sensorer är tillgängliga via den enhetliga SensorManager (Android) eller CMMotionManager (iOS) för de flesta rörelsesensorer.
Kameran är en av de mest efterfrågade hårdvarukomponenterna. På Android sker åtkomst via CameraX (modernt Jetpack API) eller Camera2 (lågnivå-API). CameraX hanterar automatiskt livscykeln, stöder Preview, ImageCapture, ImageAnalysis (ML-bildanalys) och VideoCapture. På iOS är kameran tillgänglig via AVFoundation: AVCaptureSession hanterar inspelning, AVCaptureDevice konfigurerar parametrar (fokus, ISO, vitbalans).
Mikrofonen används för ljudinspelning, röststyrning och taligenkänning. På Android — MediaRecorder eller AudioRecord; på iOS — AVAudioRecorder. Åtkomst till kamera och mikrofon kräver användarens tillstånd: Manifest.permission.CAMERA och RECORD_AUDIO (Android), NSCameraUsageDescription och NSMicrophoneUsageDescription (iOS) — strängar i Info.plist som beskriver orsaken till användningen.
På IT Sectr har vi implementerat över 20 projekt med anpassade kameror: från QR-kodskannrar till applikationer med AR-filter. Viktigaste slutsatsen: på Android sparar CameraX veckor av utveckling jämfört med Camera2, medan på iOS ger AVFoundation full kontroll över inspelningsparametrarna. Exempel på grundläggande bildinspelning via 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()))
}
}
Biometriska hårdvarufunktioner gör det möjligt för användare att logga in i en applikation med fingeravtryck eller ansikte. iOS använder Face ID (TrueDepth-kamera, 30.000 osynliga punkter) och Touch ID (kapacitiv fingeravtrycksläsare). Android använder BiometricPrompt, som kombinerar fingeravtrycksläsare (kapacitiv eller ultraljud) och Face Unlock (kamera + ML). Face ID är säkrare än Touch ID: sannolikhet för matchning 1:1.000.000 jämfört med 1:50.000.
NFC (Near Field Communication) är en trådlös kommunikationsteknik med en räckvidd på upp till 10 cm. Den används för: kontaktlösa betalningar (Google Pay, Apple Pay), läsning av NFC-taggar (smarta affischer, visitkort), verifiering (dokument, biljetter), dataöverföring (Android Beam — föråldrat). Core NFC (iOS) och NfcAdapter (Android) är de huvudsakliga API:erna. På iOS är NFC endast tillgängligt för läsning (förutom Apple Pay-betalningar).
Bluetooth/BLE (Bluetooth Low Energy) — för att ansluta externa enheter: hörlurar, fitnessarmband, medicinska sensorer, smarta lås. Core Bluetooth (iOS) och android.bluetooth (Android) — API:er för skanning, anslutning och datautbyte. BLE är energieffektivt: en enhet kan fungera på batteri i åratal. På iOS kräver BLE-bakgrundsarbete att Background Modes → Uses Bluetooth LE accessories aktiveras.
Hälso-hårdvarufunktioner: HealthKit (iOS) — Apples ramverk för aggregering av hälsodata. Användaren ger tillstånd att läsa och skriva specifika datatyper: steg, hjärtfrekvens, sömn, kalorier, vikt, blodtryck. All data lagras i ett skyddat lager och synkroniseras via iCloud. HealthKit tillhandahåller ett enhetligt gränssnitt för att skriva HKQuantitySample och läsa via HKSampleQuery eller HKStatisticsQuery.
Google Fit — Googles plattform för fitnessdata på Android. API:et är uppdelat i två uppsättningar: Sensors API (verkliga data från enhetssensorer — steg, kalorier) och History API (läsning/skrivning av historiska data). Google Fit samlar även in data från andra fitnessappar (Strava, Runkeeper) via auktorisering. På iOS är Google Fit tillgängligt via REST API.
Core Motion (iOS) — ett ramverk för att arbeta med rörelsesensorer utan dedikerat chip: accelerometer, gyroskop, stegräknare (CMPedometer), höjdmätare (CMAltimeter). CMPedometer räknar steg, tillryggalagd sträcka, tempo och antal bestigna våningar. På Android tillhandahålls liknande funktioner av Sensor.TYPE_STEP_COUNTER och Step Detector. All fitnessdata kräver uttryckligt användarsamtycke.
Augmented reality (AR) och maskininlärning på enheten representerar toppen av smartphonens hårdvarukapacitet. ARKit (Apple, iOS 11+) använder kamera, gyroskop, accelerometer och LiDAR (på Pro-modeller) för att spåra det omgivande utrymmet. ARCore (Google) är motsvarigheten för Android med planspårning, bildigenkänning och ljusuppskattning. Båda ramverken använder Visual Inertial Odometry (VIO) — en kombination av kamera och tröghetssensorer.
ML Kit (Google) — SDK för maskininlärning på Android och iOS. Innehåller färdiga API:er: textigenkänning (OCR), streckkodsskanning, ansiktsigenkänning, pos detektering, objektspårning, textigenkänning i bilder och naturlig språkbehandling. ML Kit fungerar helt på enheten — data skickas inte till servern, vilket garanterar integritet och offlinefunktionalitet.
Core ML (Apple) — ramverk för att integrera ML-modeller i iOS-applikationer. Modeller (mlmodel) konverteras från TensorFlow, PyTorch eller Keras via Core ML Tools. Vision — ramverk för datorseende: ansiktsdetektering, text, streckkoder, horisontell justering. Att kombinera Vision och Core ML gör det möjligt att bygga realtids-ML-pipelines: bildinspelning → Vision-analys → Core ML-förutsägelse → UI-uppdatering — allt på enheten med en latens på under 50 ms.
Vanliga frågor
En modern smartphone innehåller accelerometer, gyroskop, magnetometer (kompass), barometer, närhetssensor, omgivningsljussensor, fingeravtrycksläsare, kamera, mikrofon, NFC, Bluetooth, Wi-Fi, GPS. Flaggskeppsmodeller har även LiDAR, pulsmätare och temperatursensor.
Face ID är biometrisk ansiktsautentisering med TrueDepth-kameran (30.000-punkters projektion). Touch ID är fingeravtrycksautentisering via en kapacitiv skanner. Face ID är säkrare (1 på 1.000.000 jämfört med 1 på 50.000) och fungerar utan kontakt.
Det moderna tillvägagångssättet är CameraX (Jetpack-bibliotek). CameraX förenklar arbetet med kameran: hanterar automatiskt livscykeln, stöder Preview, ImageCapture, ImageAnalysis och VideoCapture. För äldre projekt används Camera2 API.
NFC gör det möjligt att: läsa och skriva NFC-taggar (smarta affischer, visitkort), kontaktlösa betalningar (Google Pay, Apple Pay), överföra data mellan enheter, verifiera dokument, öppna dörrar, använda transportkort. På iOS är NFC endast tillgängligt för läsning (förutom Apple Pay).
ARKit är Apples ramverk för augmented reality på iOS. ARCore är Googles motsvarighet för Android. Båda stöder planspårning, bildigenkänning och ljusuppskattning. ARKit använder LiDAR (på iPad Pro/iPhone Pro) för mer exakt positionering.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.