Sensoren

Symbol für Android Sensors HAL

Android-Sensoren gewähren Apps Zugriff auf die zugrunde liegenden physischen Sensoren eines Mobilgeräts. Sie sind virtuelle Geräte, die Daten bereitstellen und von sensors.h, der Sensor-Hardware-Abstraktionsschicht (HAL), definiert werden.

Was sind Android-Sensoren?

Android-Sensoren sind virtuelle Geräte, die Daten von einer Reihe physischer Sensoren bereitstellen: Beschleunigungsmesser, Gyroskope, Magnetometer, Barometer, Feuchtigkeits-, Druck-, Licht-, Näherungs- und Herzfrequenzsensoren.

Kamera, Fingerabdrucksensor, Mikrofon und Touchscreen sind nicht in der Liste der physischen Geräte enthalten, die Daten bereitstellen. Diese Geräte haben einen eigenen Meldemechanismus. Die Trennung ist willkürlich, aber im Allgemeinen liefern Android-Sensoren Daten mit niedrigerer Bandbreite. Beispiel: „100 Hz × 3 Kanäle“ für ein Beschleunigungsmesser, „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 SoC (System-on-Chip) verbunden sind.

  • Oft sind Sensorchips über einen Sensorhub mit dem SoC verbunden, was eine verbrauchsarme Überwachung und Verarbeitung der Daten ermöglicht.
  • Häufig wird als Transportmechanismus I2C (Inter-Integrated Circuit) oder SPI (Serial Peripheral Interface) verwendet.
  • Um den Stromverbrauch zu senken, sind einige Architekturen hierarchisch aufgebaut. Dabei wird ein Teil der Verarbeitung in der anwendungsspezifischen integrierten Schaltung (Application-Specific Integrated Circuit, ASIC) durchgeführt, z. B. die Bewegungserkennung auf dem Beschleunigungsmesser-Chip, und ein größerer Teil in einem Mikrocontroller, z. B. die Schritterkennung in einem Sensorhub.
  • Es liegt im Ermessen des Geräteherstellers, eine Architektur basierend auf Genauigkeit, Leistung, Preis und Paketgröße auszuwählen. Weitere Informationen finden Sie unter Sensorstack.
  • Batch-Funktionen sind ein wichtiger Faktor für die Energieoptimierung. Weitere Informationen finden Sie unter Batchverarbeitung.

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

  • Die offiziellen Sensortypen von Android 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 eine neue Art von Sensor in ein Android-Gerät einbaut, kann er einen eigenen temporären Typ definieren, um sich darauf zu beziehen.
    • Diese Typen sind nicht dokumentiert. Daher verwenden App-Entwickler sie wahrscheinlich nicht, entweder weil sie nicht davon wissen oder 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 aufgeben und stattdessen den offiziellen Typ verwenden. So wird der Sensor von mehr App-Entwicklern verwendet.
  • Die Liste aller auf dem Gerät vorhandenen Sensoren wird von der HAL-Implementierung gemeldet.
    • Es können mehrere Sensoren desselben Typs vorhanden sein. Beispiel: zwei Näherungssensoren oder zwei Beschleunigungsmesser.
    • Die überwiegende Mehrheit der Anwendungen fordert nur einen einzelnen Sensor eines bestimmten Typs an. Wenn eine Anwendung beispielsweise den Standard-Beschleunigungsmesser anfordert, wird der erste Beschleunigungsmesser in der Liste zurückgegeben.
    • Sensoren werden oft durch Aktivierungs und Nichtaktivierungspaare definiert. Beide Sensoren haben denselben Typ, unterscheiden sich aber durch ihre Aktivierungseigenschaft.

Android-Sensoren stellen Daten als Reihe von Sensorereignissen bereit.

Jedes Ereignis enthält:

  • einen Handle für den Sensor, der sie 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 jeden Sensortyp erfasst werden, finden Sie in den Definitionen für den Sensortyp.

Vorhandene Dokumentation

Für Entwickler

Auf Hersteller ausgerichtet

  • Übersicht
    • Diese Seite Sensoren und ihre Unterseiten.
  • Hardware Abstraction Layer (HAL)
  • Android CDD (Compatibility Definition Document)
    • /compatibility/android-cdd.pdf
    • Weitere Informationen finden Sie in den Abschnitten zu Sensoren.
    • Die CDD ist großzügig, sodass die Erfüllung der CDD-Anforderungen nicht ausreicht, um eine hohe Sensorqualität zu gewährleisten.