
Os sensores do Android dão aos aplicativos acesso aos sensores físicos de um dispositivo móvel. 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 de um conjunto de sensores físicos: acelerômetros, giroscópios, magnetômetros, barômetro, umidade, pressão, luz, proximidade e sensores de frequência cardíaca.
Câmera, sensor de impressão digital, microfone e tela touchscreen não estão incluídos na lista de dispositivos físicos que fornecem dados. Esses dispositivos têm um mecanismo de relatórios próprio. 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, "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 sistema em um chip (SoC, na sigla em inglês).
- Muitas vezes, os chips de sensor são conectados ao SoC por um hub de sensor, permitindo algum monitoramento e processamento de dados de baixa potência.
- Muitas vezes, o Inter-Integrated Circuit (I2C) ou a Interface Periférica Serial (SPI) são usados como mecanismo de transporte.
- Para reduzir o consumo de energia, algumas arquiteturas são hierárquicas. Um processamento mínimo é feito no circuito integrado específico do aplicativo (ASIC, como detecção de movimento no chip do acelerômetro), e mais é feito em um microcontrolador (como detecção de passos em um hub de sensores).
- Cabe ao fabricante do dispositivo escolher uma arquitetura com base em características de precisão, energia, preço e tamanho do pacote. Consulte Pilha de sensores para mais informações.
- Os recursos de agrupamento em lote são importantes para a otimização de energia. Consulte Lotes para mais informações.
Cada sensor do Android tem um "tipo" que representa como ele se comporta e quais dados fornece.
- Os tipos de sensores 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 dos sensores com esses tipos é testado no Android Compatibility Test Suite (CTS).
- Se um fabricante integrar um novo tipo de sensor em um dispositivo Android, ele poderá definir um tipo temporário próprio para se referir a
ele.
- Esses tipos não são documentados, então é improvável que os desenvolvedores de aplicativos os usem, seja porque não os conhecem ou porque 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 oficial de sensor para esse tipo de sensor, os fabricantes precisarão parar de usar o tipo temporário próprio e usar o tipo oficial. Assim, o sensor será usado por mais desenvolvedores de aplicativos.
- A lista de todos os sensores presentes no dispositivo é informada pela implementação da 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 sensor de um determinado tipo. Por exemplo, um aplicativo que solicita o acelerômetro padrão recebe o primeiro acelerômetro da lista.
- Os sensores geralmente são definidos por pares wake-up e non-wake-up. Ambos compartilham o mesmo tipo, mas diferem pela característica de despertar.
Os sensores do Android fornecem dados como uma série de eventos.
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 de tipo de sensor para saber quais dados são informados para cada tipo de sensor.
Documentação atual
Destinado 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 abordam os recursos mais recentes, como vetores de lote, movimento significativo e rotação de jogos.
- As respostas nem sempre estão corretas e mostram onde mais documentação é necessária.
Destinado a fabricantes
- Visão geral
- A página Sensores e as subpáginas dela.
- Camada de abstração de hardware (HAL)
- /platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h
- Também conhecido como "sensors.h".
- A fonte da verdade. Primeiro documento a ser atualizado quando novos recursos são desenvolvidos.
- CDD (Documento de definição de compatibilidade) do Android
- /compatibility/android-cdd.pdf
- Consulte as seções relacionadas a sensores.
- O CDD é flexível, então atender aos requisitos dele não é suficiente para garantir sensores de alta qualidade.