
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ętu (HAL) czujnika.
Czym są czujniki Androida?
Czujniki Androida to urządzenia wirtualne, 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 × 3 kanały” w przypadku akcelerometru, „25 Hz × 8 MP × 3 kanały” w przypadku kamery lub „44 kHz × 1 kanał” w przypadku mikrofonu.
Android nie określa, w jaki sposób różne czujniki fizyczne są połączone z układem SoC.
- Czujniki są często połączone z układem SoC za pomocą huba czujników, co umożliwia monitorowanie i przetwarzanie danych przy niskim zużyciu energii.
- Często jako mechanizm transportu używany jest interfejs I2C (Inter-Integrated Circuit) lub SPI (Serial Peripheral Interface).
- Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne. Minimalne przetwarzanie odbywa się w specjalizowanym układzie scalonym (ASIC, np. wykrywanie ruchu na chipie akcelerometru), a większe w mikrokontrolerze (np. wykrywanie kroków w centrum czujników).
- To producent urządzenia wybiera architekturę na podstawie dokładności, mocy, ceny i rozmiaru. Więcej informacji znajdziesz w sekcji Zestaw czujników.
- Możliwości przetwarzania wsadowego są ważnym czynnikiem optymalizacji zużycia energii. Więcej informacji znajdziesz w sekcji Grupowanie.
Każdy czujnik Androida ma „typ”, który określa jego działanie i rodzaj dostarczanych danych.
- Oficjalne typy czujników Androida są zdefiniowane w pliku sensors.h pod nazwami SENSOR_TYPE_…
- Większość czujników ma oficjalny typ.
- Te typy są opisane w pakiecie Android SDK.
- Działanie czujników tych typów jest testowane w pakiecie testów zgodności z Androidem (CTS).
- Jeśli producent zintegruje nowy rodzaj czujnika na urządzeniu z Androidem, może zdefiniować własny tymczasowy typ, 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 rzadko występują (tylko na niektórych urządzeniach tego konkretnego producenta).
- Nie są one testowane przez CTS.
- Gdy Android zdefiniuje oficjalny typ czujnika dla tego rodzaju czujnika, producenci muszą przestać używać własnego tymczasowego typu i zamiast niego używać oficjalnego typu. Dzięki temu czujnik będzie używany przez większą liczbę deweloperów aplikacji.
- Listę wszystkich czujników na urządzeniu podaje implementacja 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, która zażąda domyślnego akcelerometru, otrzyma pierwszy akcelerometr na liście.
- Czujniki są często definiowane przez pary wybudzania i niewybudzania. 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 czujnika, który wygenerował zdarzenie;
- sygnatura czasowa wykrycia lub pomiaru zdarzenia na podstawie
SystemClock.elapsedRealtimeNanos()
- i niektóre dane.
Interpretacja zgłaszanych danych zależy od typu czujnika. Szczegółowe informacje o danych raportowanych w przypadku poszczególnych typów czujników znajdziesz w definicjach typów czujników.
Istniejąca dokumentacja
Dla deweloperów
- Omówienie
- Dokumentacja pakietu SDK
- Stack Overflow i witryny z samouczkami
- Dokumentacja czujników była czasami niepełna, więc deweloperzy szukali odpowiedzi na pytania na stronach typu „pytania i odpowiedzi”, takich jak Stack Overflow.
- Istnieją też niektóre witryny z samouczkami, ale nie obejmują one najnowszych funkcji, takich jak przetwarzanie wsadowe, wykrywanie znaczących ruchów i wektory rotacji gry.
- Odpowiedzi tam podane nie zawsze są prawidłowe i wskazują, gdzie potrzebna jest dodatkowa dokumentacja.
Dla producentów
- Omówienie
- Ta strona Czujniki i jej podstrony.
- Warstwa abstrakcji sprzętowej (HAL)
- /platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h
- Znany też jako „sensors.h”.
- Źródło informacji. Pierwszy dokument, który zostanie zaktualizowany po opracowaniu nowych funkcji.
- Dokument CDD (Compatibility Definition Document) Androida
- /compatibility/android-cdd.pdf
- Zapoznaj się z sekcjami dotyczącymi czujników.
- Wymagania CDD są łagodne, więc ich spełnienie nie wystarczy, aby zapewnić wysoką jakość czujników.