Os sensores do Android fornecem aos aplicativos acesso aos sensores físicos subjacentes de um dispositivo móvel. Eles são dispositivos virtuais de fornecimento de dados definidos porsensors.h , a Camada de Abstração de Hardware (HAL) do sensor.
O que são sensores Android?
Os sensores 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 incluídos na lista de dispositivos físicos que fornecem dados estão a câmera, o sensor de impressão digital, o microfone e a tela sensível ao toque. Esses dispositivos têm seu próprio mecanismo de relatório; a separação é arbitrária, mas, em geral, os sensores do Android fornecem dados de largura de banda mais baixos. Por exemplo, “100hz x 3 canais” para um acelerômetro versus “25hz x 8 MP x 3 canais” para uma câmera ou “44kHz x 1 canal” para um microfone.
O Android não define como os diferentes sensores físicos são conectados ao sistema no chip (SoC).
- Freqüentemente, os chips sensores são conectados ao SoC por meio de um hub de sensor , permitindo algum monitoramento e processamento de dados de baixa potência.
- Freqüentemente, o Circuito Interintegrado (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 algum processamento mínimo sendo 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 sensor ).
- 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 obter mais informações.
- Os recursos de processamento em lote são uma consideração importante para a otimização de energia. Consulte Lote para obter mais informações.
Cada sensor Android tem um “tipo” que representa como o sensor se comporta e quais dados ele fornece.
- Os tipos de sensores Android oficiais são definidos emsensors.h sob os nomes SENSOR_TYPE_…
- A grande maioria dos sensores tem um tipo de sensor oficial.
- Esses tipos estão documentados no Android SDK.
- O comportamento de sensores com esses tipos é testado no Android Compatibility Test Suite (CTS).
- Se um fabricante integra um novo tipo de sensor em um dispositivo Android, o fabricante pode definir seu próprio tipo temporário para se referir a ele.
- Esses tipos não são documentados, portanto, é improvável que os desenvolvedores de aplicativos os usem, seja porque não os conhecem ou porque raramente estão presentes (apenas em alguns dispositivos desse fabricante específico).
- Eles não são testados pelo CTS.
- Depois que o Android definir um tipo de sensor oficial para esse tipo de sensor, os fabricantes devem parar de usar seu próprio tipo temporário e usar o tipo oficial. Dessa forma, o sensor será utilizado por mais desenvolvedores de aplicativos.
- A lista de todos os sensores presentes no dispositivo é relatada pela implementação HAL.
- Pode haver vários sensores do mesmo tipo. Por exemplo, dois sensores de proximidade ou dois acelerômetros.
- A grande maioria das aplicações requer apenas um único sensor de um determinado tipo. Por exemplo, um aplicativo que solicita o acelerômetro padrão obterá o primeiro acelerômetro da lista.
- Os sensores geralmente são definidos por pares de despertar e não despertar , ambos os sensores compartilhando o mesmo tipo, mas diferindo por suas características de ativação.
Os sensores do Android fornecem dados como uma série de eventos de sensor.
Cada evento contém:
- uma alça para o sensor que o gerou
- o registro de data e hora em que o evento foi detectado ou medido, com base em
SystemClock.elapsedRealtimeNanos()
- e alguns dados
A interpretação dos dados relatados depende do tipo de sensor. Consulte as definições de tipo de sensor para obter detalhes sobre quais dados são relatados para cada tipo de sensor.
Documentação existente
Direcionado a desenvolvedores
- Visão geral
- Referência do SDK
- Stack Overflow e sites de tutoriais
- Como a documentação dos sensores às vezes faltava, os desenvolvedores recorreram a sites de perguntas e respostas, como o Stack Overflow, para encontrar respostas.
- Alguns sites de tutoriais também existem, mas não cobrem os recursos mais recentes, como lotes, movimento significativo e vetores de rotação do jogo.
- As respostas ali nem sempre estão certas e mostram onde é necessária mais documentação.
Destinado a fabricantes
- Visão geral
- Esta página de Sensores e suas subpáginas.
- Camada de abstração de hardware (HAL)
- /plataforma/hardware/libhardware/+/main/include/hardware/sensors.h
- Também conhecido como “sensores.h”
- A fonte da verdade. Primeiro documento a ser atualizado quando novos recursos são desenvolvidos.
- Android CDD (Documento de Definição de Compatibilidade)
- /compatibility/android-cdd.pdf
- Consulte as seções relativas aos sensores.
- O CDD é tolerante, portanto, satisfazer os requisitos do CDD não é suficiente para garantir sensores de alta qualidade.