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) 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ètres, capteurs d'humidité, de pression, de lumière, de proximité et de fréquence cardiaque.
La liste des appareils physiques fournissant des données n'inclut pas les appareils photo, les lecteurs d'empreinte digitale, les microphones ni les écrans tactiles. 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 à faible bande passante. Par exemple, "100 Hz x 3 canaux" pour un accéléromètre, contre "25 Hz x 8 MP x 3 canaux" pour un appareil photo 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 capteur sont connectées au SoC via un hub de capteur, ce qui permet une surveillance et un traitement des données à faible consommation d'énergie.
- Souvent, le circuit inter-intégré (I2C) ou l'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. Un traitement minimal est 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 de traitement est effectué dans un microcontrôleur (comme la détection de pas dans un hub de capteur).
- Il appartient au fabricant de l'appareil de choisir une architecture en fonction de la précision, de la puissance, du prix et de la taille du package. Pour en savoir plus, consultez la section Pile de capteurs.
- Les fonctionnalités de traitement par lot sont un aspect important à prendre en compte pour l'optimisation de l'alimentation. Pour en savoir plus, consultez la section Traitement par lot.
Chaque capteur Android possède un "type" qui représente son comportement et les données qu'il fournit.
- Les types de capteurs Android officiels 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 de ces types est testé dans la Compatibility Test Suite Android (CTS).
- Si un fabricant intègre un nouveau type de capteur sur un appareil Android
device, il peut définir son propre type temporaire pour le référencer
it.
- 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 la suite 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 fournie 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 demandent qu'un seul capteur d'un type donné. Par exemple, une application demandant l'accéléromètre par défaut recevra le premier accéléromètre de la liste.
- Les capteurs sont souvent définis par des paires de capteurs de réveil et de non-réveil . Les deux capteurs partagent le même type, mais diffèrent par leur caractéristique de réveil.
Les capteurs Android fournissent des données sous forme de série d'événements de capteur.
Chaque événement contient les éléments suivants :
- un descripteur du capteur qui l'a généré
- l'horodatage auquel l'événement a été détecté ou mesuré, basé sur
SystemClock.elapsedRealtimeNanos() - et certaines données
L'interprétation des données signalées dépend du type de capteur. Pour en savoir plus sur les données signalées pour chaque type de capteur, consultez les définitions des types de capteurs.
Documentation existante
Pour les développeurs
- Présentation
- Référence du SDK
- Stack Overflow et sites Web de tutoriels
- Comme la documentation sur les capteurs était parfois insuffisante, les développeurs ont eu recours à des sites Web de questions-réponses comme Stack Overflow pour trouver des réponses.
- Il existe également des sites Web de tutoriels, mais ils ne couvrent pas les dernières fonctionnalités telles que le traitement par lot, les mouvements importants et les vecteurs de rotation de jeu.
- Les réponses ne sont pas toujours correctes et montrent où davantage de documentation est nécessaire.
Pour les fabricants
- Présentation
- Cette page Capteurs et ses sous-pages.
- Couche d'abstraction matérielle (HAL)
- /platform/hardware/libhardware/+/android17-release/include/hardware/sensors.h
- Également appelé "sensors.h"
- La source de vérité. Premier document à mettre à jour lorsque de nouvelles fonctionnalités sont développées.
- CDD Android (document de définition de compatibilité)
- /compatibility/android-cdd.pdf
- Consultez les sections relatives aux capteurs.
- Le CDD est souple. Il ne suffit donc pas de répondre à ses exigences pour garantir des capteurs de haute qualité.