
Czujniki systemu Android zapewniają aplikacjom dostęp do fizycznych czujników urządzenia mobilnego. Są to wirtualne urządzenia dostarczające dane zdefiniowane przez sensors.h , warstwę abstrakcji sprzętu (HAL) sensora.
Czym są czujniki Androida?
Czujniki Android to wirtualne urządzenia, które dostarczają dane pochodzące z zestawu czujników fizycznych: akcelerometrów, żyroskopów, magnetometrów, barometrów, wilgotności, ciśnienia, światła, czujników zbliżeniowych i tętna.
Na liście fizycznych urządzeń dostarczających dane nie ma kamery, czujnika odcisków palców, mikrofonu i ekranu dotykowego. Urządzenia te mają własny mechanizm raportowania; separacja jest arbitralna, ale ogólnie czujniki Androida zapewniają dane o niższej przepustowości. Na przykład „kanały 100 Hz x 3” w przypadku akcelerometru w porównaniu z „kanałami 25 Hz x 8 MP x 3” w przypadku kamery lub „kanał 44 kHz x 1” w przypadku mikrofonu.
Android nie definiuje, w jaki sposób różne fizyczne czujniki są podłączone do systemu na chipie (SoC).
- Często chipy czujników są połączone z SoC przez koncentrator czujników , co pozwala na monitorowanie i przetwarzanie danych przy niskim poborze mocy.
- Często jako mechanizm transportu używany jest układ scalony (I2C) lub interfejs szeregowy (SPI).
- Aby zmniejszyć zużycie energii, niektóre architektury są hierarchiczne, z minimalnym przetwarzaniem wykonywanym w układzie scalonym specyficznym dla aplikacji (ASIC - jak wykrywanie ruchu na chipie akcelerometru), a więcej odbywa się w mikrokontrolerze (jak wykrywanie kroków w koncentratorze czujników ).
- Do producenta urządzenia należy wybór architektury w oparciu o charakterystykę dokładności, mocy, ceny i wielkości opakowania. Zobacz Stos czujników, aby uzyskać więcej informacji.
- Możliwości wsadowe są ważnym czynnikiem optymalizacji zasilania. Aby uzyskać więcej informacji, zobacz Tworzenie partii .
Każdy czujnik Androida ma „typ” przedstawiający zachowanie czujnika i dostarczanych przez niego danych.
- Oficjalne typy czujników Androida są zdefiniowane w sensorach.h pod nazwami SENSOR_TYPE_…
- Zdecydowana większość czujników ma oficjalny typ czujnika.
- Te typy są udokumentowane w Android SDK.
- Zachowanie czujników z tymi typami jest testowane w pakiecie Android Compatibility Test Suite (CTS).
- Jeśli producent integruje nowy rodzaj czujnika na urządzeniu z systemem Android, może zdefiniować własny tymczasowy typ, aby się do niego odnieść.
- Te typy są nieudokumentowane, więc twórcy aplikacji raczej nie będą z nich korzystać, ponieważ albo o nich nie wiedzą, albo wiedzą, że są rzadko obecne (tylko na 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 tymczasowego typu i zamiast tego użyć oficjalnego typu. W ten sposób czujnik będzie używany przez większą liczbę twórcó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 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 przez pary budzenia i nie budzenia , oba czujniki mają ten sam typ, ale różnią się charakterystyką budzenia.
Czujniki systemu Android dostarczają dane w postaci serii zdarzeń czujnika.
Każde wydarzenie zawiera:
- uchwyt do czujnika, który go wygenerował
- znacznik czasu, w którym zdarzenie zostało wykryte lub zmierzone, na podstawie
SystemClock.elapsedRealtimeNanos()
- i trochę danych
Interpretacja raportowanych danych zależy od typu czujnika. Zobacz definicje typu czujnika, aby uzyskać szczegółowe informacje o tym, jakie dane są raportowane dla każdego typu czujnika.
Istniejąca dokumentacja
Skierowane do programistów
- Przegląd
- Dokumentacja SDK
- Stack Overflow i strony z samouczkami
- Ponieważ czasami brakowało dokumentacji czujników, programiści uciekali się do witryn z pytaniami i odpowiedziami, takich jak Stack Overflow, aby znaleźć odpowiedzi.
- Niektóre witryny z samouczkami również istnieją, ale nie obejmują najnowszych funkcji, takich jak grupowanie, znaczące wektory ruchu i rotacji gier.
- Odpowiedzi tam nie zawsze są poprawne i pokazują, gdzie potrzebna jest większa dokumentacja.
Skierowane do producentów
- Przegląd
- Ta strona Czujniki i jej podstrony.
- Warstwa abstrakcji sprzętu (HAL)
- /platforma/hardware/libhardware/+/master/include/hardware/sensors.h
- Znany również jako „sensors.h”
- Źródło prawdy. Pierwszy dokument do zaktualizowania po opracowaniu nowych funkcji.
- Android CDD (dokument definicji zgodności)
- /kompatybilność/android-cdd.pdf
- Zobacz rozdziały dotyczące czujników.
- CDD jest łagodny, więc spełnienie wymagań CDD nie wystarczy do zapewnienia wysokiej jakości sensorów.