![HAL-Symbol für Android-Sensoren](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=6&hl=de)
Android-Sensoren ermöglichen Anwendungen Zugriff auf die zugrunde liegenden physischen Sensoren eines Mobilgeräts. Dabei handelt es sich um datenbereitstellende virtuelle Geräte, die durch „sensors.h“ , den Hardware Abstraction Layer (HAL) des Sensors, definiert werden.
Was sind Android-Sensoren?
Android-Sensoren sind virtuelle Geräte, die Daten von einer Reihe physischer Sensoren liefern: Beschleunigungsmesser, Gyroskope, Magnetometer, Barometer, Feuchtigkeits-, Druck-, Licht-, Näherungs- und Herzfrequenzsensoren.
Nicht in der Liste der physischen Geräte enthalten, die Daten bereitstellen, sind Kamera, Fingerabdrucksensor, Mikrofon und Touchscreen. Diese Geräte verfügen über einen eigenen Meldemechanismus; Die Trennung ist willkürlich, aber im Allgemeinen liefern Android-Sensoren Daten mit geringerer Bandbreite. Zum Beispiel „100 Hz x 3 Kanäle“ für einen Beschleunigungsmesser im Vergleich zu „25 Hz x 8 MP x 3 Kanäle“ für eine Kamera oder „44 kHz x 1 Kanal“ für ein Mikrofon.
Android definiert nicht, wie die verschiedenen physischen Sensoren mit dem System on Chip (SoC) verbunden sind.
- Oft sind Sensorchips über einen Sensor-Hub mit dem SoC verbunden, was eine stromsparende Überwachung und Verarbeitung der Daten ermöglicht.
- Als Transportmechanismus werden häufig Inter-Integrated Circuit (I2C) oder Serial Peripheral Interface (SPI) verwendet.
- Um den Stromverbrauch zu senken, sind einige Architekturen hierarchisch aufgebaut, wobei ein Teil der minimalen Verarbeitung im anwendungsspezifischen integrierten Schaltkreis erfolgt (ASIC – wie die Bewegungserkennung auf dem Beschleunigungsmesser-Chip) und mehr in einem Mikrocontroller erfolgt (wie die Schritterkennung in einem Sensor-Hub). ).
- Es ist Sache des Geräteherstellers, eine Architektur basierend auf den Merkmalen Genauigkeit, Leistung, Preis und Gehäusegröße auszuwählen. Weitere Informationen finden Sie unter Sensorstapel .
- Batch-Funktionen sind ein wichtiger Gesichtspunkt für die Leistungsoptimierung. Weitere Informationen finden Sie unter Batchverarbeitung .
Jeder Android-Sensor verfügt über einen „Typ“, der angibt, wie sich der Sensor verhält und welche Daten er bereitstellt.
- Die offiziellen Android- Sensortypen sind in sensores.h unter den Namen SENSOR_TYPE_… definiert.
- Die allermeisten Sensoren haben einen offiziellen Sensortyp.
- Diese Typen sind im Android SDK dokumentiert.
- Das Verhalten von Sensoren dieser Typen wird in der Android Compatibility Test Suite (CTS) getestet.
- Wenn ein Hersteller einen neuen Sensortyp auf einem Android-Gerät integriert, kann der Hersteller einen eigenen temporären Typ definieren, um darauf zu verweisen.
- Diese Typen sind nicht dokumentiert, daher ist es unwahrscheinlich, dass Anwendungsentwickler sie verwenden, entweder weil sie nichts über sie wissen oder weil sie wissen, dass sie selten vorhanden sind (nur auf einigen Geräten dieses bestimmten Herstellers).
- Sie werden nicht von CTS getestet.
- Sobald Android einen offiziellen Sensortyp für diese Art von Sensoren definiert, müssen Hersteller aufhören, ihren eigenen temporären Typ zu verwenden und stattdessen den offiziellen Typ verwenden. Auf diese Weise wird der Sensor von mehr Anwendungsentwicklern genutzt.
- Die Liste aller auf dem Gerät vorhandenen Sensoren wird von der HAL-Implementierung gemeldet.
- Es können mehrere Sensoren des gleichen Typs vorhanden sein. Zum Beispiel zwei Näherungssensoren oder zwei Beschleunigungsmesser.
- Die überwiegende Mehrheit der Anwendungen erfordert nur einen einzigen Sensor eines bestimmten Typs. Beispielsweise erhält eine Anwendung, die den Standardbeschleunigungsmesser anfordert, den ersten Beschleunigungsmesser in der Liste.
- Sensoren werden oft durch Wake-up- und Non-Wake-up- Paare definiert, wobei beide Sensoren denselben Typ haben, sich aber durch ihre Wake-up-Charakteristik unterscheiden.
Android-Sensoren stellen Daten als eine Reihe von Sensorereignissen bereit.
Jede Veranstaltung enthält:
- ein Handle für den Sensor, der es generiert hat
- der Zeitstempel, zu dem das Ereignis erkannt oder gemessen wurde, basierend auf
SystemClock.elapsedRealtimeNanos()
- und einige Daten
Die Interpretation der gemeldeten Daten hängt vom Sensortyp ab. Einzelheiten dazu, welche Daten für jeden Sensortyp gemeldet werden, finden Sie in den Sensortypdefinitionen .
Vorhandene Dokumentation
Zielgruppe sind Entwickler
- Überblick
- SDK-Referenz
- Stack Overflow- und Tutorial-Websites
- Da die Dokumentation zu Sensoren manchmal fehlte, griffen Entwickler auf Frage-und-Antwort-Websites wie Stack Overflow zurück, um Antworten zu finden.
- Es gibt auch einige Tutorial-Websites, die jedoch nicht die neuesten Funktionen wie Batching, signifikante Bewegungen und Spielrotationsvektoren abdecken.
- Die Antworten dort sind nicht immer richtig und zeigen, wo mehr Dokumentation erforderlich ist.
Zielgruppe sind Hersteller
- Überblick
- Diese Seite „Sensoren“ und ihre Unterseiten.
- Hardware-Abstraktionsschicht (HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- Auch bekannt als „sensors.h“
- Die Quelle der Wahrheit. Erstes Dokument, das aktualisiert wird, wenn neue Funktionen entwickelt werden.
- Android CDD (Kompatibilitätsdefinitionsdokument)
- /compatibility/android-cdd.pdf
- Siehe Abschnitte zu Sensoren.
- Das CDD ist nachsichtig, sodass die Erfüllung der CDD-Anforderungen nicht ausreicht, um qualitativ hochwertige Sensoren sicherzustellen.