Sensori

Icona HAL dei sensori Android

I sensori Android consentono alle applicazioni di accedere ai sensori fisici sottostanti di un dispositivo mobile. Si tratta di dispositivi virtuali che forniscono dati definiti da sensors.h, l'Hardware Abstraction Layer (HAL) del sensore.

Cosa sono i sensori Android?

I sensori Android sono dispositivi virtuali che forniscono dati provenienti da un insieme di sensori fisici: accelerometri, giroscopi, magnetometri, barometro, sensori di umidità, pressione, luce, prossimità e battito cardiaco.

Non sono inclusi nell'elenco dei dispositivi fisici che forniscono dati la fotocamera, il sensore di impronte, il microfono e il touchscreen. Questi dispositivi hanno un proprio meccanismo di reporting; 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 videocamera o "44 kHz x 1 canale" per un microfono.

Android non definisce la modalità di connessione dei diversi sensori fisici al System on Chip (SoC).

  • Spesso, i chip dei sensori sono collegati al SoC tramite un hub dei sensori, consentendo un monitoraggio e un'elaborazione a basso consumo energetico dei dati.
  • Spesso, come meccanismo di trasporto vengono utilizzati Inter-Integrated Circuit (I2C) o Serial Peripheral Interface (SPI).
  • Per ridurre il consumo energetico, alcune architetture sono gerarchiche, con un'elaborazione minima eseguita nel circuito integrato per applicazioni specifiche (ASIC, come il rilevamento del movimento sul chip dell'accelerometro) e un'elaborazione maggiore eseguita in un microcontrollore (come il rilevamento dei passi in un hub sensori).
  • Spetta al produttore del dispositivo scegliere un'architettura in base a precisione, potenza, prezzo e dimensioni del pacchetto. Per saperne di più, consulta la sezione Sensor stack.
  • Le funzionalità di raggruppamento sono un aspetto importante da considerare per l'ottimizzazione del consumo energetico. Per saperne di più, consulta la sezione Raggruppamento.

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 Android.
    • Il comportamento dei sensori con questi tipi viene testato nella suite di test di compatibilità (CTS) di Android.
  • Se un produttore integra un nuovo tipo di sensore su un dispositivo Android, può definire un proprio tipo temporaneo a cui fare riferimento.
    • Questi tipi non sono documentati, quindi è improbabile che gli sviluppatori di applicazioni li utilizzino, perché non li conoscono o perché sanno che sono presenti raramente (solo su alcuni dispositivi di questo produttore specifico).
    • Non vengono testati da 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 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 fornito dall'implementazione HAL.
    • Possono esserci diversi 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 riceverà il primo accelerometro nell'elenco.
    • I sensori sono spesso definiti da coppie di sensori wake-up e non-wake-up. Entrambi i sensori condividono lo stesso tipo, ma differiscono per la caratteristica di wake-up.

I sensori Android forniscono i dati come una serie di eventi del sensore.

Ogni evento contiene:

L'interpretazione dei dati riportati dipende dal tipo di sensore. Consulta le definizioni dei tipi di sensore per informazioni dettagliate sui dati riportati per ogni tipo di sensore.

Documentazione esistente

Rivolto agli sviluppatori

Rivolto ai produttori