Czujniki

Ikona HAL czujników Androida

Czujniki Androida zapewniają aplikacjom dostęp do podstawowych czujników fizycznych urządzenia mobilnego. Są to urządzenia wirtualne dostarczające dane, zdefiniowane przez sensor.h , warstwę abstrakcji sprzętu czujnika (HAL).

Czym są czujniki Androida?

Czujniki Android to urządzenia wirtualne, które dostarczają dane pochodzące z zestawu czujników fizycznych: akcelerometrów, żyroskopów, magnetometrów, barometrów, czujników wilgotności, ciśnienia, światła, zbliżeniowych i tętna.

Na liście urządzeń fizycznych dostarczających dane nie ma aparatu, czujnika linii papilarnych, mikrofonu i ekranu dotykowego. Urządzenia te posiadają własny mechanizm raportowania; separacja jest dowolna, ale ogólnie czujniki Androida zapewniają dane o niższej przepustowości. Na przykład „100 Hz x 3 kanały” dla akcelerometru w porównaniu z „25 Hz x 8 MP x 3 kanały” dla kamery lub „44 kHz x 1 kanał” dla mikrofonu.

Android nie definiuje, w jaki sposób różne czujniki fizyczne są podłączone do systemu na chipie (SoC).

  • Często chipy czujników są podłączone do SoC za pośrednictwem koncentratora czujników , umożliwiając monitorowanie i przetwarzanie danych przy niskim poborze mocy.
  • Często jako mechanizm transportowy używany jest obwód międzyscalony (I2C) lub szeregowy interfejs peryferyjny (SPI).
  • Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne, przy czym pewne minimalne przetwarzanie odbywa się w układzie scalonym specyficznym dla aplikacji (ASIC – jak wykrywanie ruchu w chipie akcelerometru), a więcej odbywa się w mikrokontrolerze (jak wykrywanie kroków w koncentratorze czujników ).
  • Wybór architektury w oparciu o dokładność, moc, cenę i wielkość opakowania należy do producenta urządzenia. Aby uzyskać więcej informacji, zobacz Stos czujników .
  • Możliwości dozowania są ważnym czynnikiem wpływającym na optymalizację mocy. Aby uzyskać więcej informacji, zobacz sekcję Batch .

Każdy czujnik Androida ma „typ” reprezentujący jego zachowanie i dane, jakie dostarcza.

  • Oficjalne typy czujników Androida są zdefiniowane w Sensors.h pod nazwami SENSOR_TYPE_…
    • Zdecydowana większość czujników ma oficjalny typ czujnika.
    • Te typy są udokumentowane w zestawie SDK systemu Android.
    • Zachowanie czujników tego typu jest testowane w pakiecie Android Compatibility Test Suite (CTS).
  • Jeśli producent integruje nowy rodzaj czujnika w urządzeniu z Androidem, może zdefiniować własny tymczasowy typ, który będzie się do niego odnosił.
    • Typy te są nieudokumentowane, więc twórcy aplikacji raczej z nich nie skorzystają, ponieważ albo o nich nie wiedzą, albo wiedzą, że rzadko występują (tylko na niektórych urządzeniach tego konkretnego producenta).
    • Nie są testowane przez CTS.
    • Gdy system Android zdefiniuje oficjalny typ czujnika dla tego rodzaju czujnika, producenci muszą zaprzestać używania własnego typu tymczasowego i zamiast tego używać typu oficjalnego. Dzięki temu czujnik będzie używany przez większą liczbę twórców aplikacji.
  • Lista wszystkich czujników znajdujących się na urządzeniu raportowana jest przez implementację HAL.
    • Może być kilka czujników tego samego typu. Na przykład dwa czujniki zbliżeniowe lub dwa akcelerometry.
    • Zdecydowana większość aplikacji wymaga tylko jednego czujnika danego typu. Na przykład aplikacja żądająca domyślnego akcelerometru otrzyma pierwszy akcelerometr na liście.
    • Czujniki są często definiowane jako pary wybudzające i nie wybudzające , przy czym oba czujniki są tego samego typu, ale różnią się charakterystyką wybudzenia.

Czujniki Androida dostarczają dane w postaci serii zdarzeń czujnika.

Każde wydarzenie zawiera:

Interpretacja raportowanych danych zależy od typu czujnika. Szczegółowe informacje na temat danych raportowanych dla każdego typu czujnika można znaleźć w definicjach typów czujników .

Istniejąca dokumentacja

Skierowany do programistów

Skierowane do producentów