Sensortypen

In diesem Abschnitt werden Sensorachsen, Basissensoren und zusammengesetzte Sensoren (Aktivität, Haltung, nicht kalibrierte und Interaktion) beschrieben.

Sensorachsen

Sensorereigniswerte vieler Sensoren werden in einem bestimmten Frame ausgedrückt, der relativ zum Gerät statisch ist.

Achsen für Mobilgeräte

Die Sensor API ist nur relativ zur natürlichen Ausrichtung des Displays. Die Achsen werden nicht vertauscht, wenn sich die Displayausrichtung des Geräts ändert.

Koordinatensystem der Sensor API für Mobilgeräte

Abbildung 1. Koordinatensystem (relativ zu einem Mobilgerät), das von der Sensor API verwendet wird

Achsen für die Automobilbranche

In Android Automotive-Implementierungen werden Achsen in Bezug auf den Fahrzeugkörper definiert. Der Ursprung des Fahrzeug-Referenzrahmens ist die Mitte der Hinterachse. Der Referenzrahmen des Fahrzeugs ist so ausgerichtet, dass:

  • Die X-Achse zeigt nach rechts und liegt in einer horizontalen Ebene, die senkrecht zur Symmetrieebene des Fahrzeugs steht.
  • Die Y-Achse zeigt nach vorne und befindet sich in einer horizontalen Ebene.
Koordinatensystem der Sensor API für Fahrzeuge

Abbildung 2. Koordinatensystem (relativ zu einem Fahrzeuggerät), das von der Sensor API verwendet wird

Der Fahrzeugreferenzrahmen ist ein rechtshändiges Koordinatensystem. Die Z‑Achse zeigt also nach oben.

Die Z‑Achse des Referenzsystems ist an der Schwerkraft ausgerichtet, d. h., die X‑ und Y‑Achse sind beide horizontal. Daher verläuft die Y-Achse möglicherweise nicht immer durch die Vorderachse.

Basissensoren

Basissensortypen sind nach den physischen Sensoren benannt, die sie repräsentieren. Diese Sensoren leiten Daten von einem einzelnen physischen Sensor weiter, im Gegensatz zu Kompositsensoren, die Daten aus anderen Sensoren generieren. Beispiele für Basissensortypen:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

Basissensoren sind jedoch nicht mit dem zugrunde liegenden physischen Sensor identisch und sollten nicht mit diesem verwechselt werden. Die Daten eines Basissensors sind nicht die Rohausgabe des physischen Sensors, da Korrekturen wie die Vorzeichenkorrektur und die Temperaturkompensation angewendet werden.

In den folgenden Anwendungsfällen können sich die Eigenschaften eines Basissensors beispielsweise von den Eigenschaften des zugrunde liegenden physischen Sensors unterscheiden:

  • Ein Gyroskopchip mit einem Bias-Bereich von 1 Grad/Sek.
    • Nach der Kalibrierung in der Fabrik, der Temperatur- und der Vorzeichenkorrektur wird die tatsächliche Vorzeichenabweichung des Android-Sensors reduziert, möglicherweise bis zu einem Punkt, an dem die Vorzeichenabweichung garantiert unter 0,01 Grad pro Sekunde liegt.
    • In dieser Situation nehmen wir an, dass der Android-Sensor eine Verzerrung von unter 0,01 Grad/s hat, obwohl im Datenblatt des zugrunde liegenden Sensors 1 °/s angegeben ist.
  • Ein Barometer mit einer Leistungsaufnahme von 100 µW.
    • Da die generierten Daten vom Chip zum SoC übertragen werden müssen, sind die tatsächlichen Energiekosten für die Erhebung von Daten über den Barometer-Android-Sensor möglicherweise viel höher, z. B. 1.000 µW.
    • In diesem Fall wird der Android-Sensor mit einem Energieverbrauch von 1.000 µW angegeben, obwohl der an den Barometer-Chip-Leitungen gemessene Energieverbrauch 100 µW beträgt.
  • Ein Magnetometer, das bei der Kalibrierung 100 µW verbraucht, aber bei der Kalibrierung mehr.
    • Für die Kalibrierungsroutine kann es erforderlich sein, das Gyroskop zu aktivieren, 5.000 uW zu verbrauchen, einen Algorithmus auszuführen und weitere 900 uW zu kosten.
    • In diesem Fall beträgt die maximale Leistungsaufnahme des Android-Magnetometers 6.000 µW.
    • In diesem Fall ist der durchschnittliche Stromverbrauch die sinnvollere Messung. Er wird in den statischen Sensoreigenschaften über den HAL gemeldet.

Beschleunigungsmesser

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein Beschleunigungsmesser erfasst die Beschleunigung des Geräts entlang der drei Sensorachsen. Die gemessene Beschleunigung umfasst sowohl die physikalische Beschleunigung (Geschwindigkeitsänderung) als auch die Schwerkraft. Die Messung wird in den Feldern „x“, „y“ und „z“ von „sensors_event_t.acceleration“ erfasst.

Alle Werte sind in SI-Einheiten (m/s²) angegeben und geben die Beschleunigung des Geräts abzüglich der Schwerkraft entlang der drei Sensorachsen an.

Beispiele:

  • Die Norm von (x, y, z) sollte im freien Fall nahe bei 0 liegen.
  • Wenn das Gerät flach auf einem Tisch liegt und auf seiner linken Seite nach rechts geschoben wird, ist der x-Beschleunigungswert positiv.
  • Wenn das Gerät flach auf einem Tisch liegt, beträgt der Beschleunigungswert entlang von z +9,81, was der Beschleunigung des Geräts (0 m/s^2) abzüglich der Schwerkraft (-9,81 m/s^2) entspricht.
  • Wenn das Gerät flach auf einem Tisch liegt und nach oben gedrückt wird, ist der Beschleunigungswert größer als +9,81. Dies entspricht der Beschleunigung des Geräts (+A m/s²) abzüglich der Schwerkraft (–9,81 m/s²).

Die Messungen werden mithilfe der folgenden Daten kalibriert:

  • Temperaturkompensation
  • Online-Voreingenommenheitskalibrierung
  • Online-Kalibrierung der Waage

Die Kalibrierung von Offset und Skala muss nur aktualisiert werden, wenn der Sensor deaktiviert ist, um während des Streamings keine Wertesprünge zu verursachen.

Der Beschleunigungsmesser gibt auch über sensors_event_t.acceleration.status an, wie genau die Messwerte voraussichtlich sind. Weitere Informationen zu den möglichen Werten für dieses Feld finden Sie in den Konstanten SENSOR_STATUS_* von SensorManager.

Umgebungstemperatur

Berichtsmodus: Bei Änderung

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) gibt einen Sensor zurück, der nicht aktiviert wurde

Dieser Sensor liefert die Umgebungstemperatur (Raumtemperatur) in Grad Celsius.

Magnetfeldsensor

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) gibt einen Sensor zurück, der nicht aktiviert wurde

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

Ein Magnetfeldsensor (auch als Magnetometer bezeichnet) gibt das Magnetfeld der Umgebung an, gemessen entlang der drei Sensorachsen.

Die Messung wird in den Feldern „x“, „y“ und „z“ von sensors_event_t.magnetic angegeben. Alle Werte sind in Mikrotesla (µT).

Über sensors_event_t.magnetic.status gibt das Magnetometer auch an, wie genau die Messwerte voraussichtlich sind. Weitere Informationen zu den möglichen Werten für dieses Feld finden Sie in den Konstanten SENSOR_STATUS_* von SensorManager.

Die Messungen werden mithilfe der folgenden Methoden kalibriert:

  • Temperaturkompensation
  • Kalibrierung des Weicheisens in der Fabrik (oder online)
  • Online-Kalibrierung für Harteisen

Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) gibt einen Sensor zurück, der nicht aktiviert wurde

Ein Gyroskopsensor meldet die Drehgeschwindigkeit des Geräts um die drei Sensorachsen.

Eine positive Drehung ist gegen den Uhrzeigersinn (Rechtshänderregel). Das heißt, ein Beobachter, der von einem positiven Ort auf der X-, Y- oder Z-Achse auf ein Gerät am Ursprung blickt, würde eine positive Drehung melden, wenn sich das Gerät scheinbar gegen den Uhrzeigersinn dreht. Hinweis: Dies ist die standardmäßige mathematische Definition der positiven Drehung und stimmt nicht mit der Definition von Roll in der Luft- und Raumfahrt überein.

Die Messung wird in den Feldern x, y und z von sensors_event_t.gyro angegeben und alle Werte werden im Bogenmaß pro Sekunde (Rad/s) angegeben.

Die Messungen werden mithilfe der folgenden Methoden kalibriert:

  • Temperaturkompensation
  • Werks- oder Onlinevergütung
  • Online-Voreinstellbare Kalibrierung (zur Entfernung von Abweichungen)

Das Gyroskop gibt auch über sensors_event_t.gyro.status an, wie genau seine Messwerte voraussichtlich sind. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den Konstanten für SensorManager für SENSOR_STATUS_*.

Das Gyroskop kann auf der Grundlage von Magnetometern und Beschleunigungsmessern nicht emuliert werden, da dies die lokale Konsistenz und Reaktionsfähigkeit beeinträchtigen würde. Er muss auf einem herkömmlichen Gyroskopchip basieren.

Herzfrequenz

Berichtsmodus: Bei Änderung

getDefaultSensor(SENSOR_TYPE_HEART_RATE) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein Herzfrequenzsensor erfasst die aktuelle Herzfrequenz der Person, die das Gerät berührt.

Die aktuelle Herzfrequenz in Schlägen pro Minute (SPM) wird in sensors_event_t.heart_rate.bpm und der Status des Sensors unter sensors_event_t.heart_rate.status angegeben. Weitere Informationen zu den möglichen Werten für dieses Feld finden Sie in den Konstanten SENSOR_STATUS_* von SensorManager. Insbesondere bei der ersten Aktivierung muss das Statusfeld des ersten Ereignisses auf SENSOR_STATUS_UNRELIABLE gesetzt sein, es sei denn, das Gerät befindet sich nicht am Körper. Da sich dieser Sensor im Wechsel befindet, werden Ereignisse nur dann generiert, wenn sich heart_rate.bpm oder heart_rate.status seit dem letzten Ereignis geändert haben. Die Ereignisse werden nicht schneller als alle sampling_period generiert.

sensor_t.requiredPermission ist immer SENSOR_PERMISSION_BODY_SENSORS.

Leicht

Berichtsmodus: Bei Änderung

getDefaultSensor(SENSOR_TYPE_LIGHT) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein Lichtsensor meldet die aktuelle Beleuchtung in SI-Lux-Einheiten.

Die Messung wird in sensors_event_t.light erfasst.

Näherung

Berichtsmodus: Bei Änderung

Wird in der Regel als Wecksensor definiert

getDefaultSensor(SENSOR_TYPE_PROXIMITY) gibt einen Wecksensor zurück

Ein Näherungssensor meldet die Entfernung vom Sensor zur nächstgelegenen sichtbaren Oberfläche.

Bis Android 4.4 waren die Näherungssensoren immer Wecksensoren, die das SoC bei einer Änderung der Nähe weckten. Nach Android 4.4 empfehlen wir, zuerst die Wakeup-Version dieses Sensors zu implementieren, da über diese das Display beim Telefonieren ein- und ausgeschaltet wird.

Die Messung wird in sensors_event_t.distance in Zentimetern angegeben. Einige Näherungssensoren unterstützen nur eine binäre Messung („Nah“ oder „Weit“). In diesem Fall meldet der Sensor den Wert sensor_t.maxRange im Status „Weit“ und einen Wert unter sensor_t.maxRange im Status „Nah“.

Luftdruck

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_PRESSURE) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Drucksensor (auch Barometer genannt) meldet den atmosphärischen Druck in Hektopascal (hPa).

Die Messwerte werden mit

  • Temperaturkompensation
  • Kalibrierung der Vorspannung
  • Kalibrierung auf Werkswaage

Das Barometer wird häufig zur Schätzung von Höhenänderungen verwendet. Zur Schätzung der absoluten Höhe muss der Druck des Meeresspiegels, der sich je nach Wetterlage ändert, als Referenz verwendet werden.

Relative Luftfeuchtigkeit

Berichtsmodus: Bei Änderung

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein Sensor für die relative Luftfeuchtigkeit misst die relative Luftfeuchtigkeit der Umgebung und gibt einen Wert in Prozent zurück.

Zusammengesetzte Sensortypen

Ein Kompositsensor generiert Daten, indem Daten von einem oder mehreren physischen Sensoren verarbeitet und/oder zusammengeführt werden. Alle Sensoren, die keine Basissensoren sind, werden als zusammengesetzte Sensoren bezeichnet. Beispiele für Kompositsensoren:

  • Schrittzähler und erhebliche Bewegung, die in der Regel auf einem Beschleunigungsmesser basieren, aber auch auf anderen Sensoren, wenn Stromverbrauch und Genauigkeit akzeptabel sind.
  • Spielrotationsvektor, basierend auf einem Beschleunigungsmesser und einem Gyroskop.
  • Nicht kalibriertes Gyroskop, das dem Gyroskop im Unterbau ähnelt, bei dem die Kalibrierung der Abweichung jedoch separat erfasst wird, anstatt bei der Messung korrigiert zu werden.

Wie bei Basissensoren stammen die Eigenschaften der zusammengesetzten Sensoren aus den Eigenschaften der endgültigen Daten. Die Leistungsaufnahme eines Rotationsvektors für Spiele entspricht beispielsweise wahrscheinlich der Summe der Leistungsaufnahmen des Beschleunigungsmesser-Chips, des Gyroskop-Chips, des Chips, der die Daten verarbeitet, und der Busse, die die Daten transportieren. Als weiteres Beispiel: Die Abweichung eines Drehvektors in einem Spiel hängt ebenso von der Qualität des Kalibrierungsalgorithmus wie von den physischen Sensoreigenschaften ab.

In der folgenden Tabelle sind die verfügbaren Typen von Kompositsensoren aufgeführt. Jeder Sensor stützt sich auf Daten von einem oder mehreren physischen Sensoren. Wählen Sie keine anderen zugrunde liegenden physischen Sensoren aus, um Ergebnisse zu approximieren, da dies die Nutzerfreundlichkeit beeinträchtigt.

Sensortyp Kategorie Zugrunde liegende physische Sensoren Berichtsmodus

Vektor für die Drehung des Spiels

Einstellung

Beschleunigungsmesser, Gyroskop, KEIN MAGNETOMETER VERWENDEN

Kontinuierlich

Geomagnetischer Drehvektor Leistungsschmerzsensor

Einstellung

Beschleunigungsmesser, Magnetometer, KEIN Gyroskop verwenden

Kontinuierlich

Glance-Geste Sensor mit niedrigem Energieverbrauch

Interaktion

Nicht definiert

One-Shot

Schwerkraft

Einstellung

Beschleunigungsmesser, Gyroskop

Kontinuierlich

Gyroskop nicht kalibriert

Nicht kalibriert

Gyroskop

Kontinuierlich

Lineare Beschleunigung

Aktivität

Beschleunigungsmesser, Gyroskop (falls vorhanden) oder Magnetometer (falls Gyroskop nicht vorhanden)

Kontinuierlich

Magnetfeld nicht kalibriert

Nicht kalibriert

Magnetometer

Kontinuierlich

Ausrichtung (eingestellt)

Einstellung

Beschleunigungsmesser, Magnetometer, Gyroskop (falls vorhanden)

Kontinuierlich

Aufnahmegeste Sensor mit geringer Sendeleistung

Interaktion

Nicht definiert

One-Shot

Drehvektor

Einstellung

Beschleunigungsmesser, Magnetometer, Gyroskop

Kontinuierlich

Erhebliche Bewegungen Sensor mit niedrigem Energieverbrauch

Aktivität

Beschleunigungsmesser (oder ein anderer mit sehr geringer Sendeleistung)

One-Shot

Schrittzähler Sensor mit niedrigem Energieverbrauch

Aktivität

Beschleunigungsmesser

Bei Änderung

Schrittzähler Sensor mit niedrigem Energieverbrauch

Aktivität

Beschleunigungsmesser

Specials

Neigungssensor Sensor mit niedrigem Energieverbrauch

Aktivität

Beschleunigungsmesser

Specials

Aufweckgeste Sensor mit niedrigem Energieverbrauch

Interaktion

Nicht definiert

One-Shot

Sensor mit niedrigem Energieverbrauch = Sensor mit niedriger Sendeleistung

Kompositsensoren für Aktivitäten

Lineare Beschleunigung

Zugrunde liegende physische Sensoren: Beschleunigungsmesser und (falls vorhanden) Gyroskop (oder Magnetometer, falls kein Gyroskop vorhanden ist)

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein linearer Beschleunigungssensor erfasst die lineare Beschleunigung des Geräts im Sensorrahmen, ohne Schwerkraft.

Die Ausgabe ist konzeptionell: Ausgabe des Beschleunigungsmessers abzüglich der Ausgabe des Schwerekraftsensors. Sie wird in m/s^2 in den Feldern x, y und z von sensors_event_t.acceleration angegeben.

Die Messwerte auf allen Achsen sollten nahe 0 liegen, wenn das Gerät unbeweglich ist.

Wenn das Gerät ein Gyroskop hat, muss der lineare Beschleunigungssensor das Gyroskop und den Beschleunigungsmesser als Eingabe verwenden.

Wenn das Gerät kein Gyroskop hat, müssen der lineare Beschleunigungssensor den Beschleunigungsmesser und das Magnetometer als Eingabe verwenden.

Erhebliche Bewegung

Untergeordneter physischer Sensor: Beschleunigungsmesser (oder ein anderer, solange er einen niedrigen Energieverbrauch hat)

Berichtsmodus: One-Shot

Niedriger Energieverbrauch

Implementieren Sie nur die Weckversion dieses Sensors.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) gibt einen Wecksensor zurück

Eine wichtige Bewegungserkennung wird ausgelöst, wenn eine erhebliche Bewegung erkannt wird: eine Bewegung, die zu einer Änderung des Nutzerstandorts führen kann.

Beispiele für solche wichtigen Anträge:

  • Zu Fuß oder mit dem Fahrrad
  • Sitzen in einem fahrenden Auto, Coach oder Zug

Beispiele für Situationen, in denen keine erhebliche Bewegung ausgelöst wird:

  • Smartphone in der Tasche und die Person bewegt sich nicht
  • Das Smartphone liegt auf einem Tisch, der aufgrund von Verkehr oder einer Waschmaschine in der Nähe etwas wackelt

Im Allgemeinen wird die signifikante Bewegungserkennung verwendet, um den Stromverbrauch für die Standortbestimmung zu reduzieren. Wenn die Lokalisierungsalgorithmen erkennen, dass sich das Gerät nicht bewegt, können sie in einen Energiesparmodus wechseln, bei dem das Gerät nur bei starken Bewegungen aktiviert wird, wenn sich der Nutzer an einen anderen Ort bewegt.

Dieser Sensor muss einen geringen Energieverbrauch haben. Dabei wird der Stromverbrauch abgewogen, was zu einem geringen Anteil falsch negativer Ergebnisse führen kann. Das hat mehrere Gründe:

  • Dieser Sensor soll Strom sparen.
  • Das Auslösen eines Ereignisses, wenn sich der Nutzer nicht bewegt (falsch positiv), ist energieintensiv und sollte vermieden werden.
  • Es ist akzeptabel, wenn kein Ereignis ausgelöst wird, wenn sich der Nutzer bewegt (falsch negativ), solange dies nicht wiederholt geschieht. Wenn der Nutzer seit 10 Sekunden geht, darf innerhalb dieser 10 Sekunden kein Ereignis ausgelöst werden.

Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

Schrittmelder

Untergeordneter physischer Sensor: Beschleunigungsmesser (+ ggf. andere, solange sie einen niedrigen Energieverbrauch haben)

Berichtsmodus: Speziell (ein Ereignis pro Schritt)

Niedriger Energieverbrauch

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Schrittzähler generiert jedes Mal ein Ereignis, wenn der Nutzer einen Schritt macht.

Der Zeitstempel des Ereignisses sensors_event_t.timestamp entspricht dem Zeitpunkt, an dem der Fuß den Boden berührt, was zu einer großen Abweichung bei der Beschleunigung führt.

Im Vergleich zum Schrittzähler sollte der Schrittmesser eine geringere Latenz haben (weniger als zwei Sekunden). Sowohl der Schrittzähler als auch der Schrittzähler erkennen, wenn der Nutzer geht, läuft und Treppen steigt. Sie sollten nicht ausgelöst werden, wenn der Nutzer Fahrrad fährt, Auto fährt oder sich in anderen Fahrzeugen befindet.

Dieser Sensor muss einen geringen Energieverbrauch haben. Wenn die Schritterkennung also nicht in der Hardware erfolgen kann, sollte dieser Sensor nicht definiert werden. Insbesondere wenn der Schrittzähler aktiviert und der Beschleunigungsmesser deaktiviert ist, sollten nur Schritte Unterbrechungen auslösen (nicht jede Beschleunigungsmessermessung).

sampling_period_ns hat keine Auswirkungen auf Schrittzähler.

Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

Schrittzähler

Untergeordneter physischer Sensor: Beschleunigungsmesser (+ ggf. andere, solange sie einen niedrigen Energieverbrauch haben)

Berichtsmodus: Bei Änderung

Niedriger Energieverbrauch

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Schrittzähler gibt die Anzahl der Schritte an, die der Nutzer seit dem letzten Neustart zurückgelegt hat, während die Funktion aktiviert war.

Die Messung wird in sensors_event_t.step_counter als uint64_t angegeben und nur bei einem Systemneustart auf null zurückgesetzt.

Der Zeitstempel des Ereignisses wird auf die Uhrzeit gesetzt, zu der der letzte Schritt für dieses Ereignis ausgeführt wurde.

Informationen zur Bedeutung der Zeit eines Schritts finden Sie unter Schrittzähler.

Im Vergleich zum Schrittzähler kann der Schrittzähler eine höhere Latenz haben (bis zu 10 Sekunden). Dank dieser Latenz hat dieser Sensor eine hohe Genauigkeit. Die Schrittzahl nach einem ganzen Tag mit Messungen sollte nicht mehr als 10% der tatsächlichen Schrittzahl entsprechen. Sowohl der Schrittzähler als auch der Schrittzähler erkennen, wenn der Nutzer geht, läuft und Treppen steigt. Sie sollten nicht ausgelöst werden, wenn der Nutzer Fahrrad fährt, Auto fährt oder sich in anderen Fahrzeugen befindet.

Die Hardware muss dafür sorgen, dass die interne Schrittzahl niemals überläuft. Die Mindestgröße des internen Zählers der Hardware muss 16 Bit betragen. Bei einem bevorstehenden Überlauf (höchstens alle ~2^16 Schritte) kann das SoC geweckt werden, damit der Treiber die Zählerwartung durchführen kann.

Wie unter Interaktion erwähnt, darf dieser Sensor bei der Verwendung keine anderen Sensoren beeinträchtigen, insbesondere den Beschleunigungsmesser, der möglicherweise in Gebrauch ist.

Wenn ein bestimmtes Gerät diese Betriebsmodi nicht unterstützt, darf dieser Sensortyp nicht vom HAL gemeldet werden. Das heißt, es ist nicht akzeptabel, diesen Sensor im HAL zu "emulieren".

Dieser Sensor muss einen geringen Energieverbrauch haben. Wenn also die Schritterkennung nicht in der Hardware durchgeführt werden kann, sollte dieser Sensor nicht definiert werden. Insbesondere, wenn der Schrittzähler aktiviert und der Beschleunigungsmesser deaktiviert ist, sollten nur Schritte Unterbrechungen auslösen (nicht Beschleunigungsmesserdaten).

Neigungssensor

Zugrunde liegender physischer Sensor: Beschleunigungsmesser (+ möglicherweise weitere, solange der Energieverbrauch niedrig ist)

Berichtsmodus: Speziell

Niedriger Energieverbrauch

Implementieren Sie nur die Weckversion dieses Sensors.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) gibt einen Wecksensor zurück

Ein Neigungssensor generiert jedes Mal ein Ereignis, wenn ein Neigungsereignis erkannt wird.

Ein Neigungsereignis wird definiert, wenn sich die Richtung des 2-Sekunden-Mittelwerts der Schwerkraft seit der Aktivierung oder dem letzten vom Sensor generierten Ereignis um mindestens 35 Grad geändert hat. Hier ist der Algorithmus:

  • reference_estimated_gravity = Durchschnitt der Beschleunigungsmessermessungen in der ersten Sekunde nach der Aktivierung oder die geschätzte Schwerkraft, als das letzte Neigungsereignis generiert wurde.
  • current_estimated_gravity = Durchschnitt der Beschleunigungsmessermessungen der letzten 2 Sekunden.
  • Wird ausgelöst, wenn angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

Große Beschleunigungen ohne Änderung der Smartphone-Ausrichtung sollten kein Neigungsereignis auslösen. Beispielsweise sollte eine scharfe Kurve oder eine starke Beschleunigung beim Autofahren kein Neigungsereignis auslösen, auch wenn der Winkel der durchschnittlichen Beschleunigung um mehr als 35 Grad variieren kann. Normalerweise wird dieser Sensor nur mithilfe eines Beschleunigungsmessers implementiert. Andere Sensoren können ebenfalls verwendet werden, sofern sie den Stromverbrauch nicht wesentlich erhöhen. Dies ist ein Sensor mit geringem Energieverbrauch, der es dem SoC ermöglichen sollte, in den Ruhemodus zu wechseln. Emulieren Sie diesen Sensor nicht in der HAL. Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

Verbundsensoren

Rotationsvektor

Untergeordnete physische Sensoren: Beschleunigungsmesser, Magnetometer und Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) gibt einen Sensor zurück, der nicht aktiviert ist

Ein Rotationsvektorsensor meldet die Ausrichtung des Geräts relativ zum Frame mit den Ost-Nord-oben-Koordinaten. Sie wird in der Regel durch die Integration von Beschleunigungsmesser-, Gyroskop- und Magnetometerwerten ermittelt. Das Koordinatensystem „Ost-Nord-Oben“ ist als direkte orthonormale Basis definiert, wobei gilt:

  • X zeigt nach Osten und ist tangential zum Boden.
  • Y zeigt nach Norden und ist tangential zum Boden.
  • Z zeigt zum Himmel und ist senkrecht zum Boden.

Die Ausrichtung des Smartphones wird durch die Drehung dargestellt, die erforderlich ist, um die Koordinaten „Osten-Nord-Oben“ mit den Koordinaten des Smartphones auszurichten. Das bedeutet, dass die Rotation auf den Weltraum (X,Y,Z) angewendet wird, um ihn an die Smartphone-Koordinaten (x,y,z) anzupassen.

Die Drehung kann als Drehung des Smartphones um einen Winkel θ um eine Achse rot_axis angesehen werden, um von der Referenz-Geräteorientierung (Ost-Nord-Oben) zur aktuellen Geräteorientierung zu gelangen. Die Rotation ist in den vier Komponenten x, y, z, w einer Einheitsquaternion codiert:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

Dabei gilt:

  • Die Felder x, y und z von rot_axis sind die Ost-Nord-oben-Koordinaten eines Einheitslängenvektors, der die Drehachse darstellt
  • theta ist der Drehwinkel.

Die Quaternion ist eine Einheitsquaternion: Sie muss der Norm 1 entsprechen. Andernfalls kann es zu unerwartetem Clientverhalten kommen.

Außerdem meldet dieser Sensor eine geschätzte Richtungsgenauigkeit:

sensors_event_t.data[4] = estimated_accuracy (im Bogenmaß)

Der Überschriftenfehler muss in 95% der Fälle kleiner als estimated_accuracy sein. Dieser Sensor muss ein Gyroskop als Haupteingabe für die Ausrichtungsänderung verwenden.

Dieser Sensor verwendet auch die Eingaben des Beschleunigungsmessers und des Magnetometers, um die Drift des Gyroskops auszugleichen. Er kann nicht nur mit dem Beschleunigungsmesser und dem Magnetometer implementiert werden.

Spielrotationsvektor

Zugrunde liegende physische Sensoren: Beschleunigungsmesser und Gyroskop (kein Magnetometer)

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Rotationsvektorsensor für Spiele ähnelt einem Rotationsvektorsensor, verwendet aber nicht das geomagnetische Feld. Daher zeigt die Y-Achse nicht nach Norden, sondern auf einen anderen Bezug. Diese Referenz darf um denselben Betrag driften wie das Gyroskop um die Z‑Achse.

Weitere Informationen zum Festlegen von sensors_event_t.data[0-3] finden Sie im Hilfeartikel zum Rotationsvektor. Dieser Sensor meldet keine geschätzte Richtungsgenauigkeit: sensors_event_t.data[4] ist reserviert und sollte auf 0 gesetzt werden.

Im Idealfall sollte ein Smartphone, das gedreht und wieder in die gleiche Position gebracht wird, denselben Vektor für die Drehung im Spiel melden.

Dieser Sensor muss auf einem Gyroskop und einem Beschleunigungsmesser basieren. Das Magnetometer kann nicht als Eingabe verwendet werden, außer indirekt über die Schätzung der Gyroskopabweichung.

Gravity

zugrunde liegende physische Sensoren: Beschleunigungsmesser und (falls vorhanden) Gyroskop (oder Magnetometer, wenn kein Gyroskop vorhanden ist)

Berichterstellungsmodus: Fortlaufend

getDefaultSensor(SENSOR_TYPE_GRAVITY) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Gravitationssensor meldet die Richtung und Stärke der Schwerkraft in den Koordinaten des Geräts.

Die Komponenten des Gravitationsvektors werden in den Feldern „x“, „y“ und „z“ von sensors_event_t.acceleration in m/s² angegeben.

Wenn sich das Gerät nicht bewegt, sollte die Ausgabe des Gravitationssensors mit der des Beschleunigungsmessers identisch sein. Auf der Erde beträgt die Stärke etwa 9, 8 m/s².

Wenn das Gerät ein Gyroskop hat, muss der Schwerkraftsensor das Gyroskop und den Beschleunigungsmesser als Eingabe verwenden.

Wenn das Gerät kein Gyroskop hat, muss der Schwerkraftsensor den Beschleunigungsmesser und das Magnetometer als Eingabe verwenden.

Geomagnetischer Drehvektor

Zugrunde liegende physische Sensoren: Beschleunigungsmesser und Magnetometer (kein Gyroskop)

Berichtsmodus: Kontinuierlich

Niedriger Energieverbrauch

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein geomagnetischer Drehvektor ähnelt einem Drehvektorsensor, verwendet aber ein Magnetometer und kein Gyroskop.

Dieser Sensor muss auf einem Magnetometer basieren. Er kann nicht mit einem Gyroskop implementiert werden und die Gyroskopeingabe kann von diesem Sensor nicht verwendet werden.

Weitere Informationen zum Festlegen von sensors_event_t.data[0-4] finden Sie im Hilfeartikel zum Rotationsvektor.

Wie beim Rotationsvektorsensor muss der Richtungsfehler in 95% der Fälle kleiner als die geschätzte Genauigkeit (sensors_event_t.data[4]) sein.

Dieser Sensor muss möglichst wenig Strom verbrauchen und daher in der Hardware implementiert werden.

Ausrichtung (eingestellt)

Untergeordnete physische Sensoren: Beschleunigungsmesser, Magnetometer und (falls vorhanden) Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ORIENTATION) gibt einen Sensor zurück, der nicht aktiviert wurde

Hinweis:Dies ist ein älterer Sensortyp, der im Android SDK eingestellt wurde. Er wurde durch den Drehvektorsensor ersetzt, der klarer definiert ist. Verwenden Sie nach Möglichkeit den Rotationsvektorsensor über dem Ausrichtungssensor.

Ein Ausrichtungssensor meldet die Ausrichtung des Geräts. Die Messungen werden in Grad in den Feldern x, y und z von sensors_event_t.orientation angegeben:

  • sensors_event_t.orientation.x: Azimut, d. h. der Winkel zwischen der magnetischen Nordrichtung und der Y-Achse um die Z-Achse (0<=azimuth<360). 0=Nord, 90=Ost, 180=Süd, 270=West.
  • sensors_event_t.orientation.y: Neigung, Rotation um die X-Achse (-180<=pitch<=180), mit positiven Werten, wenn sich die Z-Achse in Richtung Y-Achse bewegt.
  • sensors_event_t.orientation.z: Rollung, Drehung um die Y-Achse (-90<=roll<=90), mit positiven Werten, wenn sich die X-Achse in Richtung der Z-Achse bewegt.

Hinweis: Aus historischen Gründen ist der Rollwinkel im Uhrzeigersinn positiv. (Mathematisches Vorzeichen: positiv, gegen den Uhrzeigersinn):

Darstellung der Ausrichtung im Verhältnis zu einem Gerät

Abbildung 3 Ausrichtung relativ zu einem Gerät

Diese Definition unterscheidet sich von den Begriffen „Nicken“, „Gieren“ und „Rollen“, die in der Luftfahrt verwendet werden, wo die X-Achse entlang der Längsseite des Flugzeugs verläuft (von der Leitwerkspitze bis zur Flugzeugnase).

Der Ausrichtungssensor gibt auch über sensors_event_t.orientation.status an, wie genau seine Messwerte voraussichtlich sind. Weitere Informationen zu den möglichen Werten für dieses Feld finden Sie in den Konstanten SENSOR_STATUS_* von SensorManager.

Nicht kalibrierte Sensoren

Nicht kalibrierte Sensoren liefern Rohdaten und können eine gewisse Abweichung aufweisen, enthalten aber auch weniger „Sprünge“ durch Korrekturen, die durch die Kalibrierung angewendet werden. Für einige Apps sind diese nicht kalibrierten Ergebnisse möglicherweise besser geeignet, da sie flüssiger und zuverlässiger sind. Wenn eine App beispielsweise versucht, eine eigene Sensorfusion durchzuführen, können Kalibrierungen die Ergebnisse verfälschen.

Beschleunigungsmesser nicht kalibriert

Untergeordneter physischer Sensor: Beschleunigungsmesser

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein nicht kalibrierter Beschleunigungsmesser meldet die Beschleunigung des Geräts entlang der drei Sensorachsen ohne Biaskorrektur (Werksbias und Temperaturkompensation werden auf nicht kalibrierte Messungen angewendet) sowie eine Biasschätzung. Alle Werte sind in SI-Einheiten (m/s²) und werden in den Feldern von sensors_event_t.uncalibrated_accelerometer angegeben:

  • x_uncalib: Beschleunigung (ohne Vorabglättung) entlang der X-Achse
  • y_uncalib: Beschleunigung (ohne Vorzeichenkorrektur) entlang der Y-Achse
  • z_uncalib: Beschleunigung (ohne Vorzeichenkorrektur) entlang der Z‑Achse
  • x_bias: geschätzte Verzerrung entlang der X-Achse
  • y_bias: Geschätzte Abweichung entlang der Y-Achse
  • z_bias: geschätzte Verzerrung entlang der Z-Achse

Gyroskop nicht kalibriert

Verwendeter physischer Sensor: Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein nicht kalibriertes Gyroskop meldet die Drehgeschwindigkeit um die Sensorachsen, ohne eine Fehlerkorrektur anzuwenden, zusammen mit einer Fehlerschätzung. Alle Werte sind im Bogenmaß/Sekunde angegeben und werden in den Feldern von sensors_event_t.uncalibrated_gyro angegeben:

  • x_uncalib: Winkelgeschwindigkeit (ohne Driftkompensation) um die X-Achse
  • y_uncalib: Winkelgeschwindigkeit (ohne Driftkompensation) um die Y-Achse
  • z_uncalib: Winkelgeschwindigkeit (ohne Driftkompensation) um die Z‑Achse
  • x_bias: Geschätzte Abweichung entlang der X-Achse
  • y_bias: Geschätzte Abweichung um die Y-Achse
  • z_bias: geschätzte Abweichung um die Z-Achse

Die nicht kalibrierte Messung ist konzeptionell die Summe der kalibrierten Messung und der Schätzung der Abweichung: _uncalibrated = _calibrated + _bias.

Es wird erwartet, dass die Werte x_bias, y_bias und z_bias springen, sobald sich die Schätzung der Verzerrung ändert, und sie sollten für den Rest der Zeit stabil sein.

Weitere Informationen zum verwendeten Koordinatensystem finden Sie in der Definition des Gyroskops.

Die Kalibrierung und Temperaturkompensation müssen auf die Messungen angewendet werden. Außerdem muss die Schätzung der Gyroskopabweichung implementiert werden, damit in x_bias, y_bias und z_bias vernünftige Schätzungen erfasst werden können. Wenn die Implementierung die Abweichung nicht schätzen kann, darf dieser Sensor nicht implementiert werden.

Wenn dieser Sensor vorhanden ist, muss auch der entsprechende Gyroskopsensor vorhanden sein und beide Sensoren müssen dieselben Werte für sensor_t.name und sensor_t.vendor haben.

Magnetfeld nicht kalibriert

Untergeordneter physischer Sensor: Magnetometer

Berichterstellungsmodus: Fortlaufend

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein nicht kalibrierter Magnetfeldsensor meldet das Umgebungsmagnetfeld zusammen mit einer geschätzten Kalibrierung für hartes Eisen. Alle Werte sind in Mikro-Tesla (uT) und werden in den Feldern von sensors_event_t.uncalibrated_magnetic angegeben:

  • x_uncalib: Magnetfeld (ohne Kompensation von harten Eisenteilen) entlang der X‑Achse
  • y_uncalib: Magnetfeld (ohne Kompensation für hartes Eisen) entlang der Y-Achse
  • z_uncalib: Magnetfeld (ohne Kompensation für hartes Eisen) entlang der Z‑Achse
  • x_bias: Geschätzte Magnetfeldabweichung entlang der X-Achse
  • y_bias: Geschätzte Magnetfeldstörung entlang der Y-Achse
  • z_bias: Geschätzte Magnetfeldabweichung entlang der Z‑Achse

Die nicht kalibrierte Messung ist konzeptionell die Summe der kalibrierten Messung und der Schätzung der Abweichung: _uncalibrated = _calibrated + _bias.

Der nicht kalibrierte Magnetometer ermöglicht es Algorithmen auf höherer Ebene, die Schätzung von schlechtem hartem Eisen zu verarbeiten. Die Werte x_bias, y_bias und z_bias sollten ansteigen, sobald sich die Schätzung des Hardware-Inventars ändert. Danach sollten sie stabil bleiben.

Die Messungen müssen mit einer Weicheisenkalibrierung und Temperaturkompensation versehen werden. Außerdem muss die Schätzung der Hardware implementiert werden, damit in x_bias, y_bias und z_bias angemessene Schätzungen angegeben werden können. Wenn die Implementierung die Abweichung nicht schätzen kann, darf dieser Sensor nicht implementiert werden.

Wenn dieser Sensor vorhanden ist, muss auch der entsprechende Magnetfeldsensor vorhanden sein und beide Sensoren müssen dieselben sensor_t.name- und sensor_t.vendor-Werte haben.

Scharnierwinkel

Berichtsmodus: Bei Änderung

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) gibt einen Wecksensor zurück

Ein Scharnierwinkelsensor misst den Winkel in Grad zwischen zwei wichtigen Teilen des Geräts. Die Bewegung eines Scharniers, die mit diesem Sensortyp gemessen wird, soll die Möglichkeiten ändern, wie Nutzer mit dem Gerät interagieren können, z. B. durch Aufklappen oder Entdecken eines Displays.

Kombinationssensoren für Interaktionen

Einige Sensoren werden hauptsächlich verwendet, um Interaktionen mit dem Nutzer zu erkennen. Wir legen nicht fest, wie diese Sensoren implementiert werden müssen, sie müssen jedoch einen geringen Energieverbrauch haben. Es liegt in der Verantwortung des Geräteherstellers, ihre Qualität im Hinblick auf die Nutzerfreundlichkeit zu überprüfen.

Aufwecken-Geste

Untergeordnete physische Sensoren: Undefiniert (alles mit geringem Energieverbrauch)

Berichtsmodus: One-Shot

Wenig Strom

Implementiere nur die Wakeup-Version dieses Sensors.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) gibt einen Wecksensor zurück

Mit einem Sensor für Aktivierungsgesten kann das Gerät durch eine bestimmte Bewegung aktiviert werden. Wenn dieser Sensor ausgelöst wird, verhält sich das Gerät so, als wäre die Ein/Aus-Taste gedrückt worden, und das Display wird eingeschaltet. Dieses Verhalten (Einschalten des Displays, wenn dieser Sensor ausgelöst wird) kann vom Nutzer in den Geräteeinstellungen deaktiviert werden. Änderungen an den Einstellungen wirken sich nicht auf das Verhalten des Sensors aus, sondern nur darauf, ob das Framework das Display einschaltet, wenn der Sensor ausgelöst wird. Die zu erkennende Geste ist nicht festgelegt und kann vom Gerätehersteller ausgewählt werden.

Dieser Sensor muss einen geringen Energieverbrauch haben, da er wahrscheinlich rund um die Uhr aktiviert ist.

Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

Touch-Geste zum Aufnehmen

Untergeordnete physische Sensoren: Undefiniert (alles mit geringem Energieverbrauch)

Berichtsmodus: One-Shot

Wenig Strom

Implementieren Sie nur die Weckversion dieses Sensors.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) gibt einen Wecksensor zurück

Ein Sensor für die Aufheb-Geste wird ausgelöst, wenn das Gerät aufgehoben wird, unabhängig davon, wo es sich zuvor befand (Tisch, Tasche, Hosentasche).

Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

Geste für die Schnellinfo

Untergeordnete physische Sensoren: Undefiniert (alles mit geringem Energieverbrauch)

Berichtsmodus: One-Shot

Niedriger Energieverbrauch

Implementieren Sie nur die Weckversion dieses Sensors.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) gibt einen Wecksensor zurück

Ein Sensor für Gesten zum Blicken ermöglicht es, den Bildschirm kurz einzuschalten, damit der Nutzer aufgrund einer bestimmten Bewegung Inhalte auf dem Bildschirm sehen kann. Wenn dieser Sensor ausgelöst wird, schaltet das Gerät das Display für kurze Zeit ein, damit der Nutzer einen Blick auf Benachrichtigungen oder andere Inhalte werfen kann, während das Gerät in einem nicht interaktiven Zustand gesperrt bleibt (d. h. Energiesparmodus). Anschließend wird das Display wieder ausgeschaltet. Dieses Verhalten (kurzes Einschalten des Displays, wenn dieser Sensor ausgelöst wird) kann vom Nutzer in den Geräteeinstellungen deaktiviert werden. Änderungen an den Einstellungen wirken sich nicht auf das Verhalten des Sensors aus, sondern nur darauf, ob das Framework den Bildschirm kurz einschaltet, wenn der Sensor ausgelöst wird. Die zu erkennende Geste ist nicht festgelegt und kann vom Gerätehersteller ausgewählt werden.

Der Sensor muss über wenig Energie verfügen, da er wahrscheinlich rund um die Uhr aktiviert wird. Für jedes Sensorereignis wird 1 in sensors_event_t.data[0] erfasst.

IMU-Sensoren mit begrenzten Achsen

IMU-Sensoren mit begrenzten Achsen sind ab Android 13 verfügbar. Sie unterstützen Anwendungsfälle, in denen nicht alle drei Achsen (x, y, z) verfügbar sind. Bei Standard-IMU-Typen unter Android (z. B. SENSOR_TYPE_ACCELEROMETER und SENSOR_TYPE_GYROSCOPE) wird davon ausgegangen, dass alle drei Achsen unterstützt werden. 3-Achsen-Beschleunigungsmesser und 3-Achsen-Gyroskope werden jedoch nicht von allen Formfaktoren und Geräten unterstützt.

Begrenzte Achsen des Beschleunigungsmessers

Zugrunde liegende physische Sensoren: Beschleunigungsmesser

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) gibt einen Sensor zurück, der nicht aktiviert wurde

Ein Beschleunigungsmesser mit eingeschränkten Achsen entspricht TYPE_ACCELEROMETER, unterstützt aber Fälle, in denen eine oder zwei Achsen nicht unterstützt werden.

Die letzten drei vom Sensor gemeldeten Sensorereigniswerte geben an, ob der Beschleunigungswert für die X-, Y- und Z-Achsen unterstützt wird. Der Wert 1.0 gibt an, dass die Achse unterstützt wird. Der Wert 0 bedeutet, dass sie nicht unterstützt wird. Gerätehersteller geben die unterstützten Achsen zum Zeitpunkt der Build-Erstellung an. Die Werte ändern sich nicht während der Laufzeit.

Gerätehersteller müssen die Beschleunigungswerte für nicht verwendete Achsen auf 0 festlegen, anstatt undefinierte Werte zu verwenden.

Gyroskop mit eingeschränkten Achsen

Zugrunde liegende physische Sensoren: Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) gibt einen Sensor zurück, der nicht zum Aktivieren dient

Ein Gyroskop mit eingeschränkten Achsen entspricht TYPE_GYROSCOPE, unterstützt aber Fälle, in denen eine oder zwei Achsen nicht unterstützt werden.

Die letzten drei vom Sensor gemeldeten Sensorereigniswerte geben an, ob der Wert für die Winkelgeschwindigkeit für die X-, Y- und Z-Achsen unterstützt wird. Der Wert 1.0 gibt an, dass die Achse unterstützt wird, und der Wert 0 gibt an, dass die Achse unterstützt wird. Gerätehersteller identifizieren die unterstützten Achsen zum Zeitpunkt der Build-Erstellung und die Werte ändern sich während der Laufzeit nicht.

Gerätehersteller müssen die Werte für die Winkelgeschwindigkeit für nicht verwendete Achsen auf 0 setzen.

Begrenzte Achsen des Beschleunigungsmessers nicht kalibriert

Zugrunde liegende physische Sensoren: Beschleunigungsmesser

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) gibt einen Sensor zurück, der nicht aktiviert wurde

Ein nicht kalibrierter Beschleunigungsmesser mit eingeschränkten Achsen entspricht TYPE_ACCELEROMETER_UNCALIBRATED, unterstützt aber Fälle, in denen eine oder zwei Achsen nicht unterstützt werden.

Die letzten drei vom Sensor gemeldeten Sensorereigniswerte geben an, ob die Beschleunigungs- und Vorzeichenvorgaben für die X-, Y- und Z-Achsen unterstützt werden. Der Wert 1.0 gibt an, dass die Achse unterstützt wird, und der Wert 0, dass sie nicht unterstützt wird. Gerätehersteller geben die unterstützten Achsen zum Zeitpunkt der Build-Erstellung an. Die Werte ändern sich nicht während der Laufzeit.

Gerätehersteller müssen die Beschleunigungs- und Vorzeichenwerte für nicht verwendete Achsen auf 0 festlegen.

Gyroskop mit begrenzter Achse, nicht kalibriert

Zugrunde liegende physische Sensoren: Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) gibt einen Sensor zurück, der nicht zum Aufwecken dient

Ein nicht kalibrierter Sensor mit Gyroskopbeschränkung entspricht TYPE_GYROSCOPE_UNCALIBRATED, unterstützt aber Fälle, in denen eine oder zwei Achsen nicht unterstützt werden.

Die letzten drei vom Sensor gemeldeten Sensorereigniswerte geben an, ob die Werte für Winkelgeschwindigkeit und Drift für die X-, Y- und Z-Achsen unterstützt werden. Der Wert 1.0 gibt an, dass die Achse unterstützt wird, und der Wert 0, dass sie nicht unterstützt wird. Gerätehersteller geben die unterstützten Achsen zum Zeitpunkt der Build-Erstellung an. Die Werte ändern sich nicht während der Laufzeit.

Gerätehersteller müssen die Werte für Winkelgeschwindigkeit und Drift für nicht verwendete Achsen auf 0 festlegen.

IMU mit begrenzten Achsen

Untergeordnete physische Sensoren: beliebige Kombination aus 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop, nicht kalibriertem 3-Achsen-Beschleunigungsmesser und nicht kalibriertem 3-Achsen-Gyroskop

Berichtsmodus: Kontinuierlich

Ein zusammengesetzter IMU-Sensor mit begrenzten Achsen entspricht einem IMU-Sensor mit begrenzten Achsen. Anstatt jedoch von der HAL unterstützt zu werden, wandelt er die 3‑Achsen-Sensordaten in die entsprechenden Varianten mit begrenzten Achsen um. Diese Kompositsensoren sind nur für Geräte aus der Automobilbranche aktiviert.

Die folgende Tabelle zeigt ein Beispiel für die Umrechnung von einem dreiachsigen Standard-Beschleunigungsmesser in einen zusammengesetzten Beschleunigungsmesser mit begrenzter Achse.

SensorEvent-Werte für SENSOR_TYPE_ACCELEROMETER Beispiel für ein Sensor-Ereignis vom Typ SENSOR_TYPE_ACCELEROMETER Zusammengesetztes Sensor-Ereignis vom Typ SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES
values[0]

-0,065

-0,065

values[1]

0,078

0,078

Werte[2]

9,808

9.808

values[3]

1.0

values[4]

1.0

values[5]

1.0

Automobilsensoren

Sensoren für Anwendungsfälle im Automobilbereich.

Überschrift

Zugrunde liegende physische Sensoren: beliebige Kombination aus GPS, Magnetometer, Beschleunigungsmesser und Gyroskop

Berichtsmodus: Kontinuierlich

getDefaultSensor(SENSOR_TYPE_HEADING) gibt einen Sensor zurück, der nicht aktiviert wurde

Ab Android 13 misst ein Richtungssensor die Richtung, in die das Gerät zeigt, bezogen auf den geografischen Norden, in Grad. Der Richtungssensor enthält zwei SensorEvent-Werte. Eine für die gemessene Gerätepeilung und eine für die Richtigkeit des angegebenen Peilungswerts.

Die von diesem Sensor gemeldeten Werte für den Kurs müssen zwischen 0.0 (einschließlich) und 360.0 (ausschließlich) liegen. Dabei steht 0 für Norden, 90 für Osten, 180 für Süden und 270 für Westen.

Die Genauigkeit für diesen Sensor wird mit einer Zuverlässigkeit von 68 % definiert. Wenn die zugrunde liegende Verteilung normalverteilt ist, entspricht die Genauigkeit einer Standardabweichung. Wenn der Richtungssensor beispielsweise einen Wert von 60 Grad und eine Genauigkeit von 10 Grad zurückgibt, liegt die Wahrscheinlichkeit, dass der tatsächliche Wert zwischen 50 Grad und 70 Grad liegt, bei 68 %.