![Ícone do HAL de sensores do Android](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=3&hl=pt-br)
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.
A câmera, o sensor de impressão digital, o microfone e a tela touchscreen não estão incluídos na lista de dispositivos físicos que fornecem dados. 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 de energia.
- Muitas vezes, o circuito integrado (I2C) ou a interface periférica serial (SPI) é usado como mecanismo de transporte.
- Para reduzir o consumo de energia, algumas arquiteturas são hierárquicas, com um processamento mínimo sendo 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 são documentados, 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.
- Quando 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:
- um identificador para o sensor que o gerou
- o carimbo de data/hora em que o evento foi detectado ou medido, com base em
SystemClock.elapsedRealtimeNanos()
- e alguns dados
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)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- Também conhecido como "sensors.h"
- A fonte da verdade. Primeiro documento a ser atualizado quando novos recursos forem desenvolvidos.
- Documento de definição de compatibilidade (CDD) do Android
- /compatibility/android-cdd.pdf
- Consulte as seções relacionadas aos sensores.
- O CDD é leniente, então atender aos requisitos do CDD não é suficiente para garantir sensores de alta qualidade.