I sensori Android forniscono alle applicazioni l'accesso ai sensori fisici sottostanti di un dispositivo mobile. Sono dispositivi virtuali che forniscono dati definiti da sensori.h , il sensore Hardware Abstraction Layer (HAL).
Cosa sono i sensori Android?
I sensori Android sono dispositivi virtuali che forniscono dati provenienti da una serie di sensori fisici: accelerometri, giroscopi, magnetometri, barometro, sensori di umidità, pressione, luce, prossimità e frequenza cardiaca.
Nell'elenco dei dispositivi fisici che forniscono dati non sono inclusi la fotocamera, il sensore di impronte digitali, il microfono e il touch screen. Questi dispositivi hanno un proprio meccanismo di segnalazione; la separazione è arbitraria, ma in generale i sensori Android forniscono dati con larghezza di banda inferiore. Ad esempio, "100 Hz x 3 canali" per un accelerometro rispetto a "25 Hz x 8 MP x 3 canali" per una fotocamera o "44 kHz x 1 canale" per un microfono.
Android non definisce il modo in cui i diversi sensori fisici sono collegati al System on Chip (SoC).
- Spesso, i chip dei sensori sono collegati al SoC tramite un hub di sensori , consentendo il monitoraggio e l'elaborazione dei dati a basso consumo.
- Spesso come meccanismo di trasporto viene utilizzato il circuito inter-integrato (I2C) o l'interfaccia periferica seriale (SPI).
- Per ridurre il consumo energetico, alcune architetture sono gerarchiche, con alcune elaborazioni minime eseguite nel circuito integrato specifico dell'applicazione (ASIC, come il rilevamento del movimento sul chip dell'accelerometro), e altre attività eseguite in un microcontrollore (come il rilevamento dei passi in un hub di sensori). ).
- Spetta al produttore del dispositivo scegliere un'architettura basata sulle caratteristiche di precisione, potenza, prezzo e dimensione del pacchetto. Per ulteriori informazioni vedere Stack di sensori .
- Le capacità di batching sono una considerazione importante per l'ottimizzazione della potenza. Vedi Raggruppamento per ulteriori informazioni.
Ogni sensore Android ha un "tipo" che rappresenta il comportamento del sensore e i dati che fornisce.
- I tipi di sensori Android ufficiali sono definiti in sensors.h con i nomi SENSOR_TYPE_...
- La stragrande maggioranza dei sensori ha un tipo di sensore ufficiale.
- Questi tipi sono documentati nell'SDK di Android.
- Il comportamento dei sensori di questi tipi viene testato nell'Android Compatibility Test Suite (CTS).
- Se un produttore integra un nuovo tipo di sensore su un dispositivo Android, il produttore può definire il proprio tipo temporaneo per fare riferimento ad esso.
- Questi tipi non sono documentati, quindi è improbabile che gli sviluppatori di applicazioni li utilizzino, perché non li conoscono o perché sanno che sono raramente presenti (solo su alcuni dispositivi di questo specifico produttore).
- Non sono testati dal CTS.
- Una volta che Android avrà definito un tipo di sensore ufficiale per questo tipo di sensore, i produttori dovranno smettere di utilizzare il proprio tipo temporaneo e utilizzare invece il tipo ufficiale. In questo modo, il sensore verrà utilizzato da più sviluppatori di applicazioni.
- L'elenco di tutti i sensori presenti sul dispositivo è riportato dall'implementazione HAL.
- Possono esserci più sensori dello stesso tipo. Ad esempio, due sensori di prossimità o due accelerometri.
- La stragrande maggioranza delle applicazioni richiede un solo sensore di un determinato tipo. Ad esempio, un'applicazione che richiede l'accelerometro predefinito otterrà il primo accelerometro nell'elenco.
- I sensori sono spesso definiti da coppie di risveglio e non di risveglio , entrambi i sensori condividono lo stesso tipo, ma differiscono per le caratteristiche di risveglio.
I sensori Android forniscono dati come una serie di eventi del sensore.
Ogni evento contiene:
- una maniglia al sensore che lo ha generato
- il timestamp in cui l'evento è stato rilevato o misurato, in base a
SystemClock.elapsedRealtimeNanos()
- e alcuni dati
L'interpretazione dei dati riportati dipende dal tipo di sensore. Vedere le definizioni del tipo di sensore per i dettagli su quali dati vengono riportati per ciascun tipo di sensore.
Documentazione esistente
Rivolto agli sviluppatori
- Panoramica
- Riferimento all'SDK
- Stack Overflow e siti web tutorial
- Poiché a volte la documentazione sui sensori era carente, gli sviluppatori hanno fatto ricorso a siti Web di domande e risposte come Stack Overflow per trovare risposte.
- Esistono anche alcuni siti Web tutorial, ma non coprono le funzionalità più recenti come il batching, il movimento significativo e i vettori di rotazione del gioco.
- Le risposte lì non sono sempre corrette e mostrano dove è necessaria più documentazione.
Mirato ai produttori
- Panoramica
- Questa pagina Sensori e le sue sottopagine.
- Livello di astrazione hardware (HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- Noto anche come “sensors.h”
- La fonte della verità. Primo documento da aggiornare quando vengono sviluppate nuove funzionalità.
- CDD Android (documento di definizione della compatibilità)
- /compatibilità/android-cdd.pdf
- Vedi sezioni relative ai sensori.
- La CDD è indulgente, quindi soddisfare i requisiti CDD non è sufficiente per garantire sensori di alta qualità.