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:
- uchwyt do czujnika, który go wygenerował
- znacznik czasu, w którym wykryto lub zmierzono zdarzenie, na podstawie
SystemClock.elapsedRealtimeNanos()
- i trochę danych
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
- Przegląd
- Odniesienie do SDK
- Stack Overflow i strony z samouczkami
- Ponieważ czasami brakowało dokumentacji czujników, programiści w celu znalezienia odpowiedzi uciekali się do witryn z pytaniami i odpowiedziami, takich jak Stack Overflow.
- Istnieją również witryny z samouczkami, ale nie omawiają one najnowszych funkcji, takich jak przetwarzanie wsadowe, znaczące wektory ruchu i rotacji gier.
- Odpowiedzi tam nie zawsze są prawidłowe i pokazują, gdzie potrzeba więcej dokumentacji.
Skierowane do producentów
- Przegląd
- Ta strona Sensory i jej podstrony.
- Warstwa abstrakcji sprzętu (HAL)
- /platforma/hardware/libhardware/+/main/include/hardware/sensors.h
- Znany również jako „czujniki.h”
- Źródło prawdy. Pierwszy dokument aktualizowany po opracowaniu nowych funkcji.
- Android CDD (dokument definicji zgodności)
- /kompatybilność/android-cdd.pdf
- Zobacz sekcje dotyczące czujników.
- CDD jest łagodny, więc spełnienie wymagań CDD nie wystarczy, aby zapewnić wysoką jakość czujników.