Sensores

Ícone da HAL de sensores do Android

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:

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

Destinado a fabricantes