![Ikona interfejsu HAL czujników na Androida](https://source.android.com/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=7&hl=pl)
Czujniki Androida zapewniają aplikacjom dostęp do podstawowych czujników fizycznych 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ą danych 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ętności.
Na liście urządzeń fizycznych przesyłających dane nie ma kamery, czujnika odcisków palców, mikrofonu ani ekranu dotykowego. Te urządzenia mają własny mechanizm raportowania; podział jest arbitralny, ale ogólnie czujniki Androida zapewniają 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 kamery lub „44 kHz x 1 kanał” w przypadku mikrofonu.
Android nie definiuje sposobu, w jaki różne czujniki fizyczne są połączone z systemem na chipie (SoC).
- Czujniki są często połączone z procesorem SoC za pomocą modułu czujników, co umożliwia monitorowanie i przetwarzanie danych przy niskim poborze mocy.
- Często jako mechanizm transportu używany jest interfejs I2C lub SPI.
- Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne, a niektóre minimalne operacje są wykonywane w specjalistycznym układzie scalonym (ASIC, np. wykrywanie ruchu na układzie akcelerometru), a pozostałe w mikrokontrolerze (np. wykrywanie kroków w modułu czujników).
- Producent urządzenia sam wybiera architekturę na podstawie dokładności, mocy, ceny i rozmiaru opakowania. Więcej informacji znajdziesz w sekcji Moduł czujnika.
- Możliwości zbiorczego przetwarzania danych są ważne w przypadku zaawansowanej optymalizacji. Więcej informacji znajdziesz w sekcji Przetwarzanie zbiorcze.
Każdy czujnik Androida ma „typ”, który określa jego działanie i dostępne dane.
- Oficjalne typy czujników w Androidzie 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 Compatibility Test Suite (CTS) na Androida.
- Jeśli producent zintegruje nowy rodzaj czujnika z urządzeniem z Androidem, może zdefiniować własny tymczasowy typ, aby się do niego odwoływać.
- Te typy nie są udokumentowane, więc deweloperzy aplikacji prawdopodobnie ich nie używają, ponieważ albo nie wiedzą o ich istnieniu, albo wiedzą, że występują rzadko (tylko na niektórych urządzeniach danego producenta).
- Nie są one testowane przez CTS.
- Gdy Android określi oficjalny typ tego czujnika, producenci muszą przestać używać własnego tymczasowego typu i zamiast niego używać oficjalnego typu. Dzięki temu więcej deweloperów aplikacji będzie używać tego czujnika.
- Implementacja HAL udostępnia listę wszystkich czujników obecnych na urządzeniu.
- Może być kilka czujników tego samego typu. Na przykład 2 czujniki zbliżeniowe lub 2 akcelerometry.
- Większość aplikacji wymaga tylko jednego czujnika danego typu. Na przykład aplikacja żądająca domyślnego akcelerometru otrzyma pierwszy akcelerometr na liście.
- Sensory są często definiowane przez pary budzenia i niebudzenia. Oba czujniki mają ten sam typ, ale różnią się charakterystyką budzenia.
Czujniki Androida dostarczają dane w postaci serii zdarzeń czujnika.
Każde zdarzenie zawiera:
- uchwyt do czujnika, który go wygenerował;
- sygnatura czasowa, w której zdarzenie zostało wykryte lub zmierzone na podstawie
SystemClock.elapsedRealtimeNanos()
- i niektóre dane
Interpretacja zgłoszonych danych zależy od typu czujnika. Szczegółowe informacje o danych raportowanych dla poszczególnych typów czujników znajdziesz w definicjach typu czujnika.
Istniejąca dokumentacja
Informacje kierowane do deweloperów
- Omówienie
- Dokumentacja pakietu SDK
- Stack Overflow i strony z samouczkami
- Ponieważ dokumentacja czujników była czasami niewystarczająca, deweloperzy korzystali z witryn Q&A, takich jak Stack Overflow, aby znaleźć odpowiedzi.
- Istnieją też strony z samouczkami, ale nie zawierają one informacji o najnowszych funkcjach, takich jak grupowanie, znaczące ruchy i wektory obrotu gry.
- Odpowiedzi nie zawsze są prawidłowe i pokazują, gdzie potrzebna jest dodatkowa dokumentacja.
Informacje kierowane do producentów
- Omówienie
- ta strona Czujniki i jej podstrony;
- Warstwa abstrakcji sprzętowej (HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- Inna nazwa to „sensors.h”
- Źródło danych. Pierwszy dokument, który zostanie zaktualizowany po opracowaniu nowych funkcji.
- Dokument zdefiniowany przez użytkownika (CDD) dotyczący zgodności z Androidem.
- /compatibility/android-cdd.pdf
- Zobacz sekcje dotyczące czujników.
- Wymagania CDD są łagodne, więc spełnienie wymagań CDD nie wystarczy, aby zapewnić wysoką jakość czujników.