A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Sensores
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Los sensores de Android les brindan a las aplicaciones acceso a los sensores físicos subyacentes de un dispositivo móvil. Son dispositivos virtuales que proporcionan datos definidos por sensors.h, la capa de abstracción de hardware (HAL) del sensor.
¿Qué son los sensores de Android?
Los sensores de Android son dispositivos virtuales que proporcionan datos provenientes de un conjunto de sensores físicos: acelerómetros, giroscopios, magnetómetros, barómetros, sensores de humedad, presión, luz, proximidad y frecuencia cardíaca.
La lista de dispositivos físicos que proporcionan datos no incluye la cámara, el sensor de huellas dactilares, el micrófono ni la pantalla táctil. Estos dispositivos tienen su propio mecanismo de informes. La separación es arbitraria, pero, en general, los sensores de Android proporcionan datos de ancho de banda más bajos. Por ejemplo, “100 Hz × 3 canales” para un acelerómetro en comparación con “25 Hz × 8 MP × 3 canales” para una cámara o “44 kHz × 1 canal” para un micrófono.
Android no define cómo se conectan los diferentes sensores físicos al sistema en chip (SoC).
- A menudo, los chips de sensores se conectan al SoC a través de un conmutador de sensores, lo que permite la supervisión y el procesamiento de datos de baja potencia.
- A menudo, se usa el circuito integrado (I2C) o la interfaz de periférico en serie (SPI) como mecanismo de transporte.
- Para reducir el consumo de energía, algunas arquitecturas son jerárquicas, con un procesamiento mínimo en el circuito integrado específico de la aplicación (ASIC, como la detección de movimiento en el chip del acelerómetro) y más en un microcontrolador (como la detección de pasos en un concentrador de sensores).
- Depende del fabricante del dispositivo elegir una arquitectura en función de las características de precisión, potencia, precio y tamaño del paquete. Consulta Pila de sensores para obtener más información.
- Las capacidades de procesamiento por lotes son una consideración importante para la optimización de la energía. Consulta Ejecución por lotes para obtener más información.
Cada sensor de Android tiene un "tipo" que representa cómo se comporta y qué datos proporciona.
- Los tipos de sensores oficiales de Android se definen en sensors.h con los nombres SENSOR_TYPE_…
- La gran mayoría de los sensores tienen un tipo de sensor oficial.
- Esos tipos se documentan en el SDK de Android.
- El comportamiento de los sensores con esos tipos se prueba en el Conjunto de pruebas de compatibilidad (CTS) de Android.
- Si un fabricante integra un nuevo tipo de sensor en un dispositivo Android, puede definir su propio tipo temporal para hacer referencia a él.
- Esos tipos no están documentados, por lo que es poco probable que los desarrolladores de aplicaciones los usen, ya sea porque no los conocen o porque saben que rara vez están presentes (solo en algunos dispositivos de este fabricante específico).
- El CTS no las prueba.
- Una vez que Android defina un tipo de sensor oficial para este tipo de sensor, los fabricantes deberán dejar de usar su propio tipo temporal y usar el tipo oficial. De esta manera, más desarrolladores de aplicaciones podrán usar el sensor.
- La implementación de HAL informa la lista de todos los sensores presentes en el dispositivo.
- Puede haber varios sensores del mismo tipo. Por ejemplo, dos
sensores de proximidad o dos acelerómetros.
- La gran mayoría de las aplicaciones solo solicitan un solo sensor de un tipo determinado. Por ejemplo, una aplicación que solicite el acelerómetro predeterminada obtendrá el primer acelerómetro de la lista.
- A menudo, los sensores se definen por pares de activación y no activación, en los que ambos sensores comparten el mismo tipo, pero difieren en su característica de activación.
Los sensores de Android proporcionan datos como una serie de eventos de sensor.
Cada evento contiene lo siguiente:
La interpretación de los datos informados depende del tipo de sensor. Consulta las definiciones de tipo de sensor para obtener detalles sobre los datos que se informan para cada tipo de sensor.
Documentación existente
Orientados a desarrolladores
- Descripción general
- Referencia del SDK
- Stack Overflow y sitios web de instructivos
- Debido a que a veces faltaba documentación sobre los sensores, los desarrolladores recurrieron a sitios web de preguntas y respuestas, como Stack Overflow, para encontrar respuestas.
- También existen algunos sitios web de instructivos, pero no abarcan las funciones más recientes, como el procesamiento por lotes, el movimiento significativo y los vectores de rotación de juegos.
- Las respuestas que se encuentran allí no siempre son correctas y muestran dónde se necesita más documentación.
Orientación a los fabricantes
- Descripción general
- Capa de abstracción de hardware (HAL)
- CDD de Android (Documento de definición de compatibilidad)
- /compatibility/android-cdd.pdf
- Consulta las secciones relacionadas con los sensores.
- La CDD es flexible, por lo que satisfacer sus requisitos no es suficiente para garantizar que los sensores sean de alta calidad.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]