Sensoren

Symbol für Android Sensors HAL

Android-Sensoren ermöglichen Anwendungen den Zugriff auf die physischen Sensoren eines Mobilgeräts. Es handelt sich um datenbereitstellende virtuelle Geräte, die durch sensors.h, die Sensor-HAL (Hardware Abstraction Layer), 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, die Daten liefern, enthalten sind Kamera, Fingerabdrucksensor, Mikrofon und Touchscreen. Diese Geräte haben einen eigenen Mechanismus zum Melden von Daten. Die Trennung ist willkürlich, aber im Allgemeinen liefern Android-Sensoren Daten mit geringerer Bandbreite. Beispiel: „100 Hz × 3 Kanäle“ für ein Beschleunigungsmessgerät im Vergleich zu „25 Hz × 8 MP × 3 Kanäle“ für eine Kamera oder „44 kHz × 1 Kanal“ für ein Mikrofon.

Android definiert nicht, wie die verschiedenen physischen Sensoren mit dem System-on-Chip (SoC) verbunden sind.

  • Häufig sind Sensorchips über einen Sensor-Hub mit dem SoC verbunden, was eine energieeffiziente Überwachung und Verarbeitung der Daten ermöglicht.
  • Häufig wird I2C (Inter-Integrated Circuit) oder SPI (Serial Peripheral Interface) als Transportmechanismus verwendet.
  • Um den Stromverbrauch zu senken, sind einige Architekturen hierarchisch aufgebaut. Dabei wird ein Teil der Verarbeitung in der anwendungsspezifischen integrierten Schaltung (ASIC, z. B. Bewegungserkennung auf dem Beschleunigungsmesserchip) und ein anderer Teil in einem Mikrocontroller (z. B. Schrittzählung in einem Sensor-Hub) durchgeführt.
  • Es liegt im Ermessen des Geräteherstellers, eine Architektur basierend auf Genauigkeit, Stromverbrauch, Preis und Gehäusegröße auszuwählen. Weitere Informationen finden Sie unter Sensor-Stack.
  • Batching-Funktionen sind ein wichtiger Faktor für die Energieoptimierung. Weitere Informationen finden Sie unter Batching.

Jeder Android-Sensor hat einen „Typ“, der beschreibt, wie sich der Sensor verhält und welche Daten er liefert.

  • Die offiziellen Android-Sensortypen sind in sensors.h unter den Namen SENSOR_TYPE_… definiert.
    • Die meisten Sensoren haben einen offiziellen Sensortyp.
    • Diese Typen sind im Android SDK dokumentiert.
    • Das Verhalten von Sensoren mit diesen Typen wird in der Android Compatibility Test Suite (CTS) getestet.
  • Wenn ein Hersteller einen neuen Sensortyp in ein Android-Gerät einbaut, kann er einen eigenen temporären Typ definieren, um darauf zu verweisen.
    • Diese Typen sind nicht dokumentiert, daher werden sie von App-Entwicklern wahrscheinlich nicht verwendet, entweder weil sie nicht bekannt sind 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 Sensor definiert, müssen Hersteller ihren eigenen temporären Typ nicht mehr verwenden und stattdessen den offiziellen Typ verwenden. So wird der Sensor von mehr Anwendungsentwicklern verwendet.
  • Die Liste aller auf dem Gerät vorhandenen Sensoren wird von der HAL-Implementierung gemeldet.
    • Es kann mehrere Sensoren desselben Typs geben. z. B. zwei Näherungssensoren oder zwei Beschleunigungsmesser.
    • Die meisten Anwendungen fordern nur einen einzelnen Sensor eines bestimmten Typs an. Wenn eine Anwendung beispielsweise das Standard-Beschleunigungsmessgerät anfordert, wird das erste Beschleunigungsmessgerät in der Liste zurückgegeben.
    • Sensoren werden oft durch Wake-up- und Non-Wake-up-Paare definiert. Beide Sensoren haben denselben Typ, unterscheiden sich aber durch ihre Wake-up-Eigenschaft.

Android-Sensoren liefern Daten in Form einer Reihe von Sensorereignissen.

Jedes Ereignis enthält:

  • ein Handle für den Sensor, der das Ereignis 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. Weitere Informationen dazu, welche Daten für die einzelnen Sensortypen gemeldet werden, finden Sie in den Definitionen für Sensortypen.

Vorhandene Dokumentation

Für Entwickler

Für Hersteller

  • Übersicht
    • Diese Seite Sensoren und ihre Unterseiten.
  • Hardwareabstraktionsschicht (HAL)
  • Android CDD (Compatibility Definition Document)
    • /compatibility/android-cdd.pdf
    • Weitere Informationen finden Sie in den Abschnitten zu Sensoren.
    • Die CDD ist nachgiebig. Das Erfüllen der CDD-Anforderungen reicht daher nicht aus, um hochwertige Sensoren zu gewährleisten.