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 de périphériques virtuels fournissant des données définis par capteurs.h , la couche d'abstraction matérielle (HAL) du capteur.

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ètre, capteurs d'humidité, de pression, de lumière, de proximité et de fréquence cardiaque.

La liste des appareils physiques fournissant des données ne comprend pas l’appareil photo, le capteur d’empreintes digitales, le microphone et l’écran tactile. Ces appareils disposent de leur propre mécanisme de reporting ; la séparation est arbitraire, mais en général, les capteurs Android fournissent des données à bande passante inférieure. Par exemple, « 100 Hz x 3 canaux » pour un accéléromètre contre « 25 Hz x 8 MP x 3 canaux » pour une caméra ou « 44 kHz x 1 canal » pour un microphone.

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

  • Souvent, les puces de capteurs sont connectées au SoC via un hub de capteurs , permettant une surveillance et un traitement des données à faible consommation.
  • Souvent, un circuit inter-intégré (I2C) ou une interface périphérique série (SPI) est utilisé comme mécanisme de transport.
  • 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 de l'accéléromètre), et davantage dans un microcontrôleur (comme la détection de pas dans un hub de capteurs). ).
  • Il appartient au fabricant de l'appareil de choisir une architecture basée sur les caractéristiques de précision, de puissance, de prix et de taille du boîtier. Voir Pile de capteurs pour plus d'informations.
  • Les capacités de traitement par lots sont une considération importante pour l’optimisation de la puissance. Voir Traitement par lots pour plus d'informations.

Chaque capteur Android possède un « type » représentant son comportement et les données qu'il fournit.

  • Les types de capteurs Android officiels sont définis dans sensor.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 de ces types est testé dans la suite de tests de compatibilité Android (CTS).
  • Si un constructeur intègre un nouveau type de capteur sur un appareil Android, le constructeur peut définir son propre type temporaire pour y faire référence.
    • 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 aura défini un type de capteur officiel pour ce type de capteur, les fabricants doivent cesser d'utiliser leur propre type temporaire et utiliser à la place le type officiel. 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 rapportée par l'implémentation 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 nécessitent qu'un seul capteur d'un type donné. Par exemple, une application demandant l'accéléromètre par défaut obtiendra le premier accéléromètre de la liste.
    • Les capteurs sont souvent définis par des paires de réveil et de non-réveil , les deux capteurs partageant le même type, mais différant par leurs caractéristiques de réveil.

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

Chaque événement contient :

  • une poignée vers le capteur qui l'a généré
  • l'horodatage auquel l'événement a été détecté ou mesuré, basé sur SystemClock.elapsedRealtimeNanos()
  • et quelques données

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

Documentation existante

Destiné aux développeurs

Destiné aux fabricants

  • Aperçu
  • Couche d'abstraction matérielle (HAL)
  • CDD Android (document de définition de compatibilité)
    • /compatibilité/android-cdd.pdf
    • Voir les sections relatives aux capteurs.
    • Le CDD est indulgent, donc satisfaire aux exigences du CDD ne suffit pas pour garantir des capteurs de haute qualité.