Uno smartphone moderno non è solo un dispositivo di calcolo, ma un insieme di potenti sensori. Fotocamera, accelerometro, giroscopio, NFC, scanner facciale — tutto questo è disponibile per gli sviluppatori attraverso le API della piattaforma. Le funzionalità hardware consentono di creare applicazioni che interagiscono con il mondo fisico: dai fitness tracker ai giochi di realtà aumentata. In questo articolo, tratteremo tutti i principali sensori e API per iOS e Android. Per maggiori dettagli, consultare la documentazione ufficiale dei sensori Android.
Punti chiave
Le funzionalità hardware dello smartphone includono decine di sensori che raccolgono dati sull'ambiente e sulla posizione del dispositivo. Questi dati sono disponibili tramite Sensors API (Android) e Core Motion (iOS). I sensori sono divisi in tre categorie: sensori di movimento (accelerometro, giroscopio), sensori di posizione (magnetometro) e sensori ambientali (barometro, luce, temperatura).
L'accelerometro misura l'accelerazione del dispositivo lungo tre assi (x, y, z) in m/s². Viene utilizzato per: rilevamento dell'orientamento dello schermo (rotazione automatica), conteggio dei passi (navigazione pedonale), riconoscimento dei gesti (scuotere per annullare), giochi con controllo tramite inclinazione. Android Sensor.TYPE_ACCELEROMETER e Core Motion CMMotionManager (iOS) forniscono dati grezzi fino a 200 Hz.
Il giroscopio misura la velocità angolare di rotazione del dispositivo lungo tre assi (rad/s). A differenza dell'accelerometro, il giroscopio non è influenzato dalla gravità, rendendolo ideale per tracciare le rotazioni. Applicazioni: stabilizzazione video, applicazioni VR/AR, navigazione interna, controller di gioco. Sensor.TYPE_GYROSCOPE (Android) e CMMotionManager (iOS) sono le API principali.
Il magnetometro misura il campo magnetico terrestre lungo tre assi (µT) e funge da bussola elettronica. Viene utilizzato nelle applicazioni di navigazione per determinare la direzione verso nord. Il magnetometro è sensibile alle interferenze di oggetti metallici e altoparlanti; è necessaria la calibrazione (il caratteristico movimento a forma di otto). Sensor.TYPE_MAGNETIC_FIELD — API Android.
Il barometro misura la pressione atmosferica (hPa) e viene utilizzato per determinare l'altitudine sul livello del mare con una precisione fino a 1 metro. Il sensore di prossimità spegne lo schermo quando il telefono viene avvicinato all'orecchio durante una chiamata. Il sensore di luce ambientale regola la luminosità dello schermo. Tutti questi sensori sono accessibili tramite SensorManager (Android) o CMMotionManager (iOS) per la maggior parte dei sensori di movimento.
La fotocamera è uno dei componenti hardware più richiesti. Su Android, l'accesso avviene tramite CameraX (API Jetpack moderna) o Camera2 (API di basso livello). CameraX gestisce automaticamente il ciclo di vita, supporta Preview, ImageCapture, ImageAnalysis (analisi dei fotogrammi ML) e VideoCapture. Su iOS, la fotocamera è disponibile tramite AVFoundation: AVCaptureSession gestisce la cattura, AVCaptureDevice configura i parametri (messa a fuoco, ISO, bilanciamento del bianco).
Il microfono viene utilizzato per registrazione audio, controllo vocale e riconoscimento vocale. Su Android — MediaRecorder o AudioRecord; su iOS — AVAudioRecorder. L'accesso alla fotocamera e al microfono richiede l'autorizzazione dell'utente: Manifest.permission.CAMERA e RECORD_AUDIO (Android), NSCameraUsageDescription e NSMicrophoneUsageDescription (iOS) — stringhe in Info.plist che descrivono il motivo dell'utilizzo.
In IT Sectr, abbiamo implementato oltre 20 progetti con fotocamere personalizzate: dagli scanner di codici QR alle applicazioni con filtri AR. Conclusione principale: su Android, CameraX fa risparmiare settimane di sviluppo rispetto a Camera2, mentre su iOS, AVFoundation offre il controllo totale sui parametri di scatto. Esempio di acquisizione di base dell'immagine tramite 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()))
}
}
Le funzionalità hardware biometriche consentono agli utenti di accedere a un'applicazione tramite impronta digitale o volto. iOS utilizza Face ID (fotocamera TrueDepth, 30.000 punti invisibili) e Touch ID (scanner di impronte capacitivo). Android utilizza BiometricPrompt, che combina scanner di impronte (capacitivo o ultrasonico) e Face Unlock (fotocamera + ML). Face ID è più sicuro di Touch ID: probabilità di corrispondenza 1:1.000.000 contro 1:50.000.
NFC (Near Field Communication) è una tecnologia di comunicazione wireless con una portata fino a 10 cm. Viene utilizzato per: pagamenti contactless (Google Pay, Apple Pay), lettura di tag NFC (poster intelligenti, biglietti da visita), verifica (documenti, biglietti), trasferimento dati (Android Beam — obsoleto). Core NFC (iOS) e NfcAdapter (Android) sono le API principali. Su iOS, NFC è disponibile solo per la lettura (eccetto i pagamenti Apple Pay).
Bluetooth/BLE (Bluetooth Low Energy) — per connettere dispositivi esterni: cuffie, braccialetti fitness, sensori medici, serrature intelligenti. Core Bluetooth (iOS) e android.bluetooth (Android) — API per scansionare, connettere e scambiare dati. BLE è energeticamente efficiente: un dispositivo può funzionare a batteria per anni. Su iOS, il funzionamento BLE in background richiede l'attivazione di Background Modes → Uses Bluetooth LE accessories.
Funzionalità hardware per la salute: HealthKit (iOS) — framework di Apple per l'aggregazione di dati sulla salute. Gli utenti concedono l'autorizzazione a leggere e scrivere tipi specifici di dati: passi, frequenza cardiaca, sonno, calorie, peso, pressione sanguigna. Tutti i dati sono memorizzati in un repository protetto e sincronizzati tramite iCloud. HealthKit fornisce un'interfaccia unificata per scrivere HKQuantitySample e leggere tramite HKSampleQuery o HKStatisticsQuery.
Google Fit — piattaforma di Google per i dati fitness su Android. L'API è divisa in due insiemi: Sensors API (dati reali dai sensori del dispositivo — passi, calorie) e History API (lettura/scrittura di dati storici). Google Fit aggrega anche dati da altre app fitness (Strava, Runkeeper) tramite autorizzazione. Su iOS, Google Fit è disponibile tramite REST API.
Core Motion (iOS) — framework per lavorare con i sensori di movimento senza chip dedicato: accelerometro, giroscopio, podometro (CMPedometer), altimetro (CMAltimeter). CMPedometer conta i passi, la distanza percorsa, il ritmo e i piani saliti. Su Android, capacità simili sono fornite da Sensor.TYPE_STEP_COUNTER e Step Detector. Tutti i dati fitness richiedono il consenso esplicito dell'utente.
La realtà aumentata (AR) e l'apprendimento automatico sul dispositivo rappresentano l'apice delle capacità hardware dello smartphone. ARKit (Apple, iOS 11+) utilizza fotocamera, giroscopio, accelerometro e LiDAR (sui modelli Pro) per tracciare lo spazio circostante. ARCore (Google) è l'equivalente Android con tracciamento del piano, riconoscimento delle immagini e stima dell'illuminazione. Entrambi i framework utilizzano Visual Inertial Odometry (VIO) — una combinazione di fotocamera e sensori inerziali.
ML Kit (Google) — SDK per l'apprendimento automatico su Android e iOS. Include API pronte: riconoscimento testo (OCR), scansione codici a barre, riconoscimento facciale, rilevamento della posa, tracciamento oggetti, riconoscimento testo nelle immagini e elaborazione del linguaggio naturale. ML Kit funziona interamente sul dispositivo — i dati non vengono inviati al server, garantendo privacy e funzionamento offline.
Core ML (Apple) — framework per integrare modelli ML in applicazioni iOS. I modelli (mlmodel) vengono convertiti da TensorFlow, PyTorch o Keras tramite Core ML Tools. Vision — framework per la visione artificiale: rilevamento volti, testo, codici a barre, allineamento orizzontale. Combinare Vision e Core ML consente di costruire pipeline ML in tempo reale: acquisizione fotogramma → analisi Vision → previsione Core ML → aggiornamento UI — tutto sul dispositivo con latenza inferiore a 50 ms.
Domande frequenti
Uno smartphone moderno contiene accelerometro, giroscopio, magnetometro (bussola), barometro, sensore di prossimità, sensore di luce ambientale, scanner di impronte digitali, fotocamera, microfono, NFC, Bluetooth, Wi-Fi, GPS. I modelli di punta hanno anche LiDAR, monitor della frequenza cardiaca e sensore di temperatura.
Face ID è l'autenticazione biometrica facciale utilizzando la fotocamera TrueDepth (proiezione di 30.000 punti). Touch ID è l'autenticazione tramite impronta digitale tramite scanner capacitivo. Face ID è più sicuro (1 su 1.000.000 contro 1 su 50.000) e funziona senza contatto.
L'approccio moderno è CameraX (libreria Jetpack). CameraX semplifica il lavoro con la fotocamera: gestisce automaticamente il ciclo di vita, supporta Preview, ImageCapture, ImageAnalysis e VideoCapture. Per i progetti legacy, viene utilizzata l'API Camera2.
NFC consente di: leggere e scrivere tag NFC (poster intelligenti, biglietti da visita), pagamenti contactless (Google Pay, Apple Pay), trasferire dati tra dispositivi, verificare documenti, aprire porte, utilizzare carte di trasporto. Su iOS, NFC è disponibile solo per la lettura (eccetto Apple Pay).
ARKit è il framework di Apple per la realtà aumentata su iOS. ARCore è l'equivalente di Google per Android. Entrambi supportano il tracciamento del piano, il riconoscimento delle immagini e la stima dell'illuminazione. ARKit utilizza LiDAR (su iPad Pro/iPhone Pro) per un posizionamento più preciso.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.