![Icona HAL per i sensori Android](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=0&hl=it)
I sensori Android consentono alle applicazioni di accedere ai sensori fisici di base di un dispositivo mobile. Si tratta di dispositivi virtuali che forniscono dati definiti da sensors.h, il livello di astrazione hardware (HAL) del sensore.
Che cosa sono i sensori Android?
I sensori Android sono dispositivi virtuali che forniscono dati provenienti da un insieme di sensori fisici: accelerometri, giroscopio, magnetometri, barometro, umidità, pressione, luce, prossimità e battito cardiaco.
Non sono inclusi nell'elenco dei dispositivi fisici che forniscono dati la fotocamera, il sensore di impronte digitali, il microfono e il touchscreen. Questi dispositivi hanno un proprio meccanismo di generazione di report. La separazione è arbitraria, ma in generale i sensori Android forniscono dati con una 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 in che modo i diversi sensori fisici sono collegati al SoC (System on Chip).
- Spesso i chip dei sensori sono collegati all'SoC tramite un hub di sensori, il che consente di monitorare ed elaborare i dati a basso consumo energetico.
- Spesso, come meccanismo di trasporto viene utilizzato Inter-Integrated Circuit (I2C) o Serial Peripheral Interface (SPI).
- Per ridurre il consumo di energia, alcune architetture sono gerarchiche, con un'elaborazione minima eseguita nel circuito integrato per applicazioni specifiche (ASIC, ad esempio il rilevamento dei movimenti sul chip dell'accelerometro) e un'elaborazione più approfondita in un microcontrollore (ad esempio il rilevamento dei passi in un hub di sensori).
- Spetta al produttore del dispositivo scegliere un'architettura in base alle caratteristiche di precisione, potenza, prezzo e dimensioni del pacchetto. Per ulteriori informazioni, consulta la sezione Sensor stack.
- Le funzionalità di raggruppamento sono un aspetto importante per l'ottimizzazione della potenza. Per ulteriori informazioni, consulta la sezione Raggruppamento.
Ogni sensore Android ha un "tipo" che rappresenta il suo comportamento e i dati che fornisce.
- I tipi di sensore ufficiali di Android sono definiti in sensors.h con i nomi SENSOR_TYPE_…
- La maggior parte dei sensori ha un tipo ufficiale.
- Questi tipi sono documentati nell'SDK Android.
- Il comportamento dei sensori di questi tipi viene testato nella suite di test di compatibilità Android (CTS).
- Se un produttore integra un nuovo tipo di sensore su un dispositivo Android, può definire il proprio tipo temporaneo a cui fare riferimento.
- Questi tipi non sono documentati, pertanto è improbabile che gli sviluppatori di applicazioni li utilizzino, perché non li conoscono o sanno che sono presenti raramente (solo su alcuni dispositivi di questo produttore specifico).
- Non vengono testate da CTS.
- Una volta che Android definisce un tipo di sensore ufficiale per questo tipo di sensore, i produttori devono 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 viene riportato dall'implementazione HAL.
- Possono essere presenti più sensori dello stesso tipo. Ad esempio, due sensori di prossimità o due accelerometri.
- La maggior parte delle applicazioni richiede un solo sensore di un determinato tipo. Ad esempio, un'applicazione che richiede l'accelerometro predefinito riceverà il primo nell'elenco.
- I sensori sono spesso definiti da coppie di risveglio e non risveglio che condividono lo stesso tipo, ma differiscono per la loro caratteristica di risveglio.
I sensori Android forniscono i dati sotto forma di una serie di eventi del sensore.
Ogni evento contiene:
- un handle del 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 registrati dipende dal tipo di sensore. Consulta le definizioni del tipo di sensore per informazioni dettagliate sui dati registrati per ogni tipo di sensore.
Documentazione esistente
Diretti agli sviluppatori
- Panoramica
- Riferimento SDK
- Stack Overflow e siti web di tutorial
- Poiché a volte la documentazione dei sensori non era disponibile, gli sviluppatori ricorrevano a siti web di domande e risposte come Stack Overflow per trovare le risposte.
- Esistono anche alcuni siti web di tutorial, ma non coprono le funzionalità più recenti come il raggruppamento, il movimento significativo e i vettori di rotazione del gioco.
- Le risposte non sono sempre corrette e mostrano dove è necessaria altra documentazione.
Diretti ai produttori
- Panoramica
- Questa pagina Sensori e le relative sottopagine.
- Hardware Abstraction Layer (HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- Chiamato anche "sensors.h"
- La fonte attendibile. Primo documento da aggiornare quando vengono sviluppate nuove funzionalità.
- CDD (Compatibility Definition Document) Android
- /compatibility/android-cdd.pdf
- Consulta le sezioni relative ai sensori.
- Il CDD è permissivo, pertanto soddisfare i requisiti del CDD non è sufficiente per garantire sensori di alta qualità.