Czujniki

Ikona Android Sensors HAL

Czujniki Androida umożliwiają aplikacjom dostęp do fizycznych czujników urządzenia mobilnego. Są to wirtualne urządzenia dostarczające dane, zdefiniowane przez sensors.h, czyli warstwę abstrakcji sprzętowej (HAL) czujnika.

Czym są czujniki Androida?

Czujniki Androida to wirtualne urządzenia, które dostarczają dane 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, czytnika linii papilarnych, mikrofonu ani ekranu dotykowego. Te urządzenia mają własny mechanizm raportowania. Podział jest arbitralny, ale ogólnie czujniki Androida dostarczają dane o mniejszej przepustowości. Na przykład „100 Hz x 3 kanały” w przypadku akcelerometru w porównaniu z „25 Hz x 8 MP x 3 kanały” w przypadku aparatu lub „44 kHz x 1 kanał” w przypadku mikrofonu.

Android nie określa, jak różne czujniki fizyczne są połączone z układem SoC.

  • Często układy czujników są połączone z układem SoC przez koncentrator czujników, co umożliwia monitorowanie i przetwarzanie danych przy niskim zużyciu energii.
  • Jako mechanizm transportu często używa się interfejsu I2C (Inter-Integrated Circuit) lub SPI (Serial Peripheral Interface).
  • Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne. Minimalne przetwarzanie odbywa się w układzie ASIC (Application-Specific Integrated Circuit) – np. wykrywanie ruchu w układzie akcelerometru, a bardziej zaawansowane przetwarzanie w mikrokontrolerze (np. wykrywanie kroków w koncentratorze czujników).
  • Producent urządzenia wybiera architekturę na podstawie dokładności, zużycia energii, ceny i rozmiaru. Więcej informacji znajdziesz w artykule Stos czujników.
  • Ważnym czynnikiem optymalizacji zużycia energii jest możliwość grupowania. Więcej informacji znajdziesz w artykule Grupowanie.

Każdy czujnik Androida ma „typ”, który określa jego zachowanie i dane, które dostarcza.

  • Jeśli producent zintegruje nowy rodzaj czujnika z urządzeniem z Androidem , może zdefiniować własny typ tymczasowy, aby się do niego odwoływać.
    • Te typy nie są udokumentowane, więc deweloperzy aplikacji raczej ich nie używają, ponieważ o nich nie wiedzą lub wiedzą, że występują rzadko (tylko w niektórych urządzeniach tego konkretnego producenta).
    • Nie są testowane przez CTS.
    • Gdy Android zdefiniuje oficjalny typ czujnika dla tego rodzaju czujnika, producenci muszą przestać używać własnego typu tymczasowego i zacząć używać typu oficjalnego. Dzięki temu czujnik będzie używany przez większą liczbę deweloperów aplikacji.
  • Lista wszystkich czujników obecnych na urządzeniu jest raportowana przez implementację HAL.
    • Może być kilka czujników tego samego typu. Na przykład 2 czujniki zbliżeniowe lub 2 akcelerometry.
    • Zdecydowana większość aplikacji żąda 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 czujników wybudzających i niewybudzających . Oba czujniki mają ten sam typ, ale różnią się charakterystyką wybudzania.

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

Każde zdarzenie zawiera:

  • uchwyt do czujnika, który je wygenerował,
  • sygnaturę czasową, w której zdarzenie zostało wykryte lub zmierzone, na podstawie SystemClock.elapsedRealtimeNanos()
  • i pewne dane.

Interpretacja zgłaszanych danych zależy od typu czujnika. Szczegółowe informacje o tym, jakie dane są zgłaszane w przypadku poszczególnych typów czujników, znajdziesz w definicjach typów czujników.

Obecna dokumentacja

Dla deweloperów

Dla producentów