Capteurs

Icône HAL des capteurs Android

Les capteurs Android permettent aux applications d'accéder aux capteurs physiques sous-jacents d'un appareil mobile. Il s'agit d'appareils virtuels fournissant des données définis par sensors.h, la couche d'abstraction matérielle (HAL) des capteurs.

Que sont les capteurs Android ?

Les capteurs Android sont des appareils virtuels qui fournissent des données provenant d'un ensemble de capteurs physiques: accéléromètres, gyroscopes, magnétomètres, baromètres, capteurs d'humidité, de pression, de luminosité, de proximité et de fréquence cardiaque.

La liste des appareils physiques fournissant des données n'inclut pas la caméra, le lecteur d'empreinte digitale, le micro et l'écran tactile. Ces appareils disposent de leur propre mécanisme de création de rapports. La séparation est arbitraire, mais en général, les capteurs Android fournissent des données de bande passante plus faibles. Par exemple, "100 Hz x 3 canaux" pour un accéléromètre, "25 Hz x 8 MP x 3 canaux" pour une caméra ou "44 kHz x 1 canal" pour un micro.

Android ne définit pas la manière dont les différents capteurs physiques sont connectés au système sur puce (SoC).

  • Les puces de capteurs sont souvent connectées au SoC via un hub de capteurs, ce qui permet de surveiller et de traiter les données à faible consommation d'énergie.
  • Le mécanisme de transport utilisé est souvent l'I2C (Inter-Integrated Circuit) ou la SPI (Serial Peripheral Interface).
  • Pour réduire la consommation d'énergie, certaines architectures sont hiérarchiques, avec un traitement minimal effectué dans le circuit intégré spécifique à l'application (ASIC, comme la détection de mouvement sur la puce d'accéléromètre), et plus de traitement effectué dans un microcontrôleur (comme la détection de pas dans un hub de capteurs).
  • C'est au fabricant de l'appareil de choisir une architecture en fonction des caractéristiques de précision, de puissance, de prix et de taille de package. Pour en savoir plus, consultez la section Pile de capteurs.
  • Les fonctionnalités de traitement par lot sont un facteur important à prendre en compte pour l'optimisation de la consommation d'énergie. Pour en savoir plus, consultez la section Groupement.

Chaque capteur Android possède un "type" qui représente le comportement du capteur et les données qu'il fournit.

  • Les types de capteurs officiels d'Android sont définis dans sensors.h sous les noms SENSOR_TYPE_…
    • La grande majorité des capteurs ont un type de capteur officiel.
    • Ces types sont documentés dans le SDK Android.
    • Le comportement des capteurs avec ces types est testé dans la suite de tests de compatibilité Android (CTS).
  • Si un fabricant intègre un nouveau type de capteur sur un appareil Android, il peut définir son propre type temporaire pour s'y référer.
    • Ces types ne sont pas documentés. Il est donc peu probable que les développeurs d'applications les utilisent, soit parce qu'ils ne les connaissent pas, soit parce qu'ils savent qu'ils sont rarement présents (uniquement sur certains appareils de ce fabricant spécifique).
    • Ils ne sont pas testés par CTS.
    • Une fois qu'Android définit un type de capteur officiel pour ce type de capteur, les fabricants doivent cesser d'utiliser leur propre type temporaire et utiliser le type officiel à la place. De cette façon, le capteur sera utilisé par davantage de développeurs d'applications.
  • La liste de tous les capteurs présents sur l'appareil est signalée par l'implémentation du HAL.
    • Il peut y avoir plusieurs capteurs du même type. Par exemple, deux capteurs de proximité ou deux accéléromètres.
    • La grande majorité des applications ne demandent qu'un seul capteur d'un type donné. Par exemple, une application qui demande l'accéléromètre par défaut obtient le premier accéléromètre de la liste.
    • Les capteurs sont souvent définis par des paires de déclenchement et de non-déclenchement, les deux capteurs partageant le même type, mais différant par leur caractéristique de déclenchement.

Les capteurs Android fournissent des données sous la forme d'une série d'événements de capteur.

Chaque événement contient les éléments suivants:

  • un handle du capteur qui l'a généré
  • l'horodatage à l'heure de la détection ou de la mesure de l'événement, en fonction de SystemClock.elapsedRealtimeNanos()
  • et certaines données

L'interprétation des données signalées dépend du type de capteur. Consultez les définitions des types de capteurs pour en savoir plus sur les données enregistrées pour chaque type de capteur.

Documentation existante

Destiné aux développeurs

Cible les fabricants

  • Présentation
    • Cette page Capteurs et ses sous-pages.
  • Couche d'abstraction matérielle (HAL)
  • Document de définition de la compatibilité Android
    • /compatibility/android-cdd.pdf
    • Consultez les sections sur les capteurs.
    • Le CDD est indulgent. Par conséquent, respecter les exigences du CDD ne suffit pas à garantir des capteurs de haute qualité.