À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Capteurs
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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 est souvent l'interface I2C (Inter-Integrated Circuit) ou 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 indiqué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
- Présentation
- Référence du SDK
- Stack Overflow et les sites Web de tutoriels
- La documentation sur les capteurs étant parfois insuffisante, les développeurs ont 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, comme le traitement par lot, le mouvement significatif et les vecteurs de rotation de jeu.
- Les réponses qui y sont données ne sont pas toujours correctes et indiquent où des documents supplémentaires sont nécessaires.
Cible les fabricants
- Présentation
- 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é.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Sensors\n\nAndroid sensors give applications access to a mobile device's underlying\nphysical sensors. They are data-providing virtual devices defined by [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h), the sensor Hardware Abstraction Layer (HAL).\n\nWhat are Android sensors?\n-------------------------\n\nAndroid sensors are virtual devices that provide data coming from a set of\nphysical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity,\npressure, light, proximity and heart rate sensors.\n\nNot included in the list of physical devices providing data are camera,\nfingerprint sensor, microphone, and touch screen. These devices have their own\nreporting mechanism; the separation is arbitrary, but in general, Android sensors\nprovide lower bandwidth data. For example, \"100hz x 3 channels\" for an\naccelerometer versus \"25hz x 8 MP x 3 channels\" for a camera or \"44kHz x 1\nchannel\" for a microphone.\n\nAndroid does not define how the different physical sensors are connected\nto the system on chip (SoC).\n\n- Often, sensor chips are connected to the SoC through a [sensor hub](/docs/core/interaction/sensors/sensor-stack#sensor_hub), allowing some low-power monitoring and processing of the data.\n- Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface (SPI) is used as the transport mechanism.\n- To reduce power consumption, some architectures are hierarchical, with some minimal processing being done in the application-specific integrated circuit (ASIC - like motion detection on the accelerometer chip), and more is done in a microcontroller (like step detection in a sensor hub).\n- It is up to the device manufacturer to choose an architecture based on accuracy, power, price and package-size characteristics. See [Sensor stack](/docs/core/interaction/sensors/sensor-stack) for more information.\n- Batching capabilities are an important consideration for power optimization. See [Batching](/docs/core/interaction/sensors/batching) for more information.\n\nEach Android sensor has a \"type\" representing how the sensor behaves and\nwhat data it provides.\n\n- The official Android [Sensor\n types](/docs/core/interaction/sensors/sensor-types) are defined in [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h) under the names SENSOR_TYPE_...\n - The vast majority of sensors have an official sensor type.\n - Those types are documented in the Android SDK.\n - Behavior of sensors with those types are tested in the Android Compatibility Test Suite (CTS).\n- If a manufacturer integrates a new kind of sensor on an Android device, the manufacturer can define its own temporary type to refer to it.\n - Those types are undocumented, so application developers are unlikely to use them, either because they don't know about them, or know that they are rarely present (only on some devices from this specific manufacturer).\n - They are not tested by CTS.\n - Once Android defines an official sensor type for this kind of sensor, manufacturers must stop using their own temporary type and use the official type instead. This way, the sensor will be used by more application developers.\n- The list of all sensors present on the device is reported by the HAL implementation.\n - There can be several sensors of the same type. For example, two proximity sensors or two accelerometers.\n - The vast majority of applications request only a single sensor of a given type. For example, an application requesting the default accelerometer will get the first accelerometer in the list.\n - Sensors are often defined by [wake-up](/docs/core/interaction/sensors/suspend-mode#wake-up_sensors) and [non-wake-up](/docs/core/interaction/sensors/suspend-mode#non-wake-up_sensors) pairs, both sensors sharing the same type, but differing by their wake-up characteristic.\n\nAndroid sensors provide data as a series of sensor events.\n\nEach [event](/docs/core/interaction/sensors/hal-interface#sensors_event_t)\ncontains:\n\n- a handle to the sensor that generated it\n- the timestamp at which the event was detected or measured, based on [`SystemClock.elapsedRealtimeNanos()`](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtimeNanos())\n- and some data\n\nThe interpretation of the reported data depends on the sensor type. See\nthe [sensor type](/docs/core/interaction/sensors/sensor-types)\ndefinitions for details on what data is reported for each sensor type.\n\nExisting documentation\n----------------------\n\n### Targeted at developers\n\n- Overview\n - \u003chttps://developer.android.com/guide/topics/sensors/sensors_overview.html\u003e\n- SDK reference\n - \u003chttps://developer.android.com/reference/android/hardware/SensorManager\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEventListener\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEvent\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/Sensor\u003e\n- Stack Overflow and tutorial websites\n - Because sensors documentation was sometimes lacking, developers resorted to Q\\&A websites like Stack Overflow to find answers.\n - Some tutorial websites exist as well, but do not cover the latest features like batching, significant motion and game rotation vectors.\n - The answers over there are not always right, and show where more documentation is needed.\n\n### Targeted at manufacturers\n\n- Overview\n - This [Sensors](/docs/core/interaction/sensors) page and its sub-pages.\n- Hardware abstraction layer (HAL)\n - [/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h)\n - Also known as \"sensors.h\"\n - The source of truth. First document to be updated when new features are developed.\n- Android CDD (Compatibility Definition Document)\n - [/compatibility/android-cdd.pdf](/static/docs/compatibility/android-cdd.pdf)\n - See sections relative to sensors.\n - The CDD is lenient, so satisfying the CDD requirements is not enough to ensure high quality sensors."]]