A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Sensores
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Os sensores do Android dão aos aplicativos acesso aos sensores físicos
subjacentes de um dispositivo móvel. Eles são dispositivos virtuais que fornecem dados definidos por sensors.h, a camada de abstração de hardware (HAL) do sensor.
O que são sensores do Android?
Os sensores do Android são dispositivos virtuais que fornecem dados provenientes de um conjunto de
sensores físicos: acelerômetros, giroscópios, magnetômetros, barômetros, sensores de umidade,
pressão, luz, proximidade e frequência cardíaca.
Não estão incluídos na lista de dispositivos físicos que fornecem dados a câmera,
o sensor de impressão digital, o microfone e a tela touch. Esses dispositivos têm o próprio
mecanismo de geração de relatórios. A separação é arbitrária, mas, em geral, os sensores do Android
fornecem dados de largura de banda mais baixa. Por exemplo, "100 Hz x 3 canais" para um
acelerômetro em comparação com "25 Hz x 8 MP x 3 canais" para uma câmera ou "44 kHz x 1
canal" para um microfone.
O Android não define como os diferentes sensores físicos são conectados
ao system on chip (SoC).
- Muitas vezes, os chips de sensores são conectados ao SoC por um hub de sensores, permitindo
monitoramento e processamento de dados de baixo consumo.
- Muitas vezes, o circuito integrado (I2C, na sigla em inglês) ou a interface periférica serial
(SPI, na sigla em inglês) são usados como mecanismo de transporte.
- Para reduzir o consumo de energia, algumas arquiteturas são hierárquicas, com
um processamento mínimo feito no circuito integrado específico do aplicativo (ASIC, como a detecção de movimento no chip do acelerômetro), e mais
é feito em um microcontrolador (como a detecção de passos em um hub de sensores).
- Cabe ao fabricante do dispositivo escolher uma arquitetura com base nas
características de precisão, potência, preço e tamanho do pacote. Consulte Pilha de sensores para mais
informações.
- Os recursos de lote são uma consideração importante para a otimização
de energia. Consulte Processamento em lote para
mais informações.
Cada sensor do Android tem um "tipo" que representa como o sensor se comporta e
quais dados ele fornece.
- Os tipos de sensor
oficiais do Android são definidos em sensors.h com os nomes SENSOR_TYPE_…
- A grande maioria dos sensores tem um tipo oficial.
- Esses tipos estão documentados no SDK do Android.
- O comportamento de sensores com esses tipos é testado no Teste de compatibilidade (CTS, na sigla em inglês) do Android.
- Se um fabricante integrar um novo tipo de sensor a um dispositivo
Android, ele poderá definir o próprio tipo temporário para se referir
a ele.
- Esses tipos não têm documentação, então é improvável que os desenvolvedores de apps os usem, seja porque eles não sabem sobre eles ou
sabem que eles raramente estão presentes (apenas em alguns dispositivos desse
fabricante específico).
- Elas não são testadas pelo CTS.
- Depois que o Android definir um tipo de sensor oficial para esse tipo de sensor,
os fabricantes precisarão parar de usar o próprio tipo temporário e usar o
tipo oficial. Dessa forma, o sensor será usado por mais
desenvolvedores de aplicativos.
- A lista de todos os sensores presentes no dispositivo é informada pela implementação
do HAL.
- Pode haver vários sensores do mesmo tipo. Por exemplo, dois
sensores de proximidade ou dois acelerômetros.
- A grande maioria dos aplicativos solicita apenas um único sensor de
um determinado tipo. Por exemplo, um aplicativo que solicita o acelerômetro
padrão vai receber o primeiro acelerômetro da lista.
- Os sensores geralmente são definidos por pares de ativação e
não ativação, ambos compartilhando o mesmo tipo, mas diferindo pela
característica de ativação.
Os sensores do Android fornecem dados como uma série de eventos do sensor.
Cada evento
contém:
A interpretação dos dados informados depende do tipo de sensor. Consulte as definições do tipo de sensor para saber quais dados são informados para cada tipo de sensor.
Documentação atual
Direcionado a desenvolvedores
- Visão geral
- Referência do SDK
- Stack Overflow e sites de tutoriais
- Como a documentação dos sensores às vezes era insuficiente, os desenvolvedores
recorriam a sites de perguntas e respostas, como o Stack Overflow, para encontrar respostas.
- Alguns sites de tutoriais também existem, mas não abrangem os recursos
mais recentes, como agrupamento, movimento significativo e vetores de rotação de jogos.
- As respostas não são sempre corretas e mostram onde mais documentação é necessária.
Segmentação para fabricantes
- Visão geral
- Esta página Sensors
e as subpáginas dela.
- Camada de abstração de hardware (HAL)
- Documento de definição de compatibilidade (CDD) do Android
- /compatibility/android-cdd.pdf
- Consulte as seções relacionadas aos sensores.
- O CDD é flexível, então atender aos requisitos do CDD não é suficiente para garantir
sensores de alta qualidade.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]