In diesem Abschnitt werden Sensorachsen, Basissensoren und zusammengesetzte Sensoren (Aktivität, Lage, unkalibriert und Interaktion) beschrieben.
Sensorachsen
Sensorereigniswerte von vielen Sensoren werden in einem bestimmten Rahmen ausgedrückt, der im Verhältnis zum Gerät statisch ist.
Mobile Geräteachsen
Die Sensor-API ist nur relativ zur natürlichen Ausrichtung des Bildschirms (Achsen werden nicht vertauscht, wenn sich die Bildschirmausrichtung des Geräts ändert).
![Koordinatensystem der Sensor-API für mobile Geräte](https://developer.android.com/images/axis_device.png?authuser=7&hl=de)
Abbildung 1. Koordinatensystem (relativ zu einem mobilen Gerät), das von der Sensor-API verwendet wird
Automobilachsen
In Android Automotive-Implementierungen werden Achsen in Bezug auf den Fahrzeugkarosserierahmen definiert. Der Ursprung des Fahrzeugbezugssystems ist die Mitte der Hinterachse. Der Fahrzeugbezugsrahmen ist so ausgerichtet, dass:
- Die X-Achse zeigt nach rechts und liegt auf einer horizontalen Ebene, senkrecht zur Fahrzeugsymmetrieebene.
- Die Y-Achse zeigt nach vorne und liegt auf einer horizontalen Ebene.
![Koordinatensystem der Sensor-API für Automobilgeräte](https://source.android.com/static/docs/core/interaction/sensors/images/axis_auto.png?authuser=7&hl=de)
Abbildung 2. Koordinatensystem (relativ zu einem Automobilgerät), das von der Sensor-API verwendet wird
Der Fahrzeugbezugsrahmen ist ein rechtsdrehendes Koordinatensystem. Daher zeigt die Z-Achse nach oben.
Die Z-Achse des Referenzrahmens ist auf die Schwerkraft ausgerichtet, was bedeutet, dass die X-Achse und die Y-Achse beide horizontal sind. Daher verläuft die Y-Achse möglicherweise nicht immer durch die Vorderachse.
Basissensoren
Basissensortypen werden nach den physikalischen Sensoren benannt, die sie darstellen. Diese Sensoren leiten Daten von einem einzelnen physischen Sensor weiter (im Gegensatz zu zusammengesetzten Sensoren, die Daten aus anderen Sensoren generieren). Beispiele für Basissensortypen sind:
-
SENSOR_TYPE_ACCELEROMETER
-
SENSOR_TYPE_GYROSCOPE
-
SENSOR_TYPE_MAGNETOMETER
Allerdings sind Basissensoren nicht gleichbedeutend mit dem zugrunde liegenden physischen Sensor und sollten nicht mit diesem verwechselt werden. Die Daten eines Basissensors sind nicht die Rohausgabe des physischen Sensors, da Korrekturen (z. B. Bias-Kompensation und Temperaturkompensation) angewendet werden.
Beispielsweise können sich die Eigenschaften eines Basissensors in den folgenden Anwendungsfällen von den Eigenschaften des zugrunde liegenden physischen Sensors unterscheiden:
- Ein Gyroskop-Chip mit einem Bias-Bereich von 1 Grad/Sek.
- Nachdem die Werkskalibrierung, Temperaturkompensation und Bias-Kompensation angewendet wurden, wird die tatsächliche Bias des Android-Sensors reduziert, möglicherweise bis zu einem Punkt, an dem die Bias garantiert unter 0,01 Grad/Sek. liegt.
- In dieser Situation sagen wir, dass der Android-Sensor eine Abweichung von weniger als 0,01 Grad/Sek. aufweist, obwohl im Datenblatt des zugrunde liegenden Sensors 1 Grad/Sek. angegeben ist.
- Ein Barometer mit einem Stromverbrauch von 100 uW.
- Da die generierten Daten vom Chip zum SoC transportiert werden müssen, könnten die tatsächlichen Stromkosten für die Datenerfassung vom Barometer-Android-Sensor viel höher sein, beispielsweise 1000 uW.
- In dieser Situation sagen wir, dass der Android-Sensor einen Stromverbrauch von 1000 uW hat, obwohl der an den Barometer-Chipleitungen gemessene Stromverbrauch 100 uW beträgt.
- Ein Magnetometer, das bei der Kalibrierung 100 uW verbraucht, bei der Kalibrierung jedoch mehr verbraucht.
- Seine Kalibrierungsroutine erfordert möglicherweise die Aktivierung des Gyroskops, was 5000 uW verbraucht, und die Ausführung eines Algorithmus, was weitere 900 uW kostet.
- In dieser Situation sagen wir, dass der maximale Stromverbrauch des (Magnetometer-)Android-Sensors 6000 uW beträgt.
- In diesem Fall ist der durchschnittliche Stromverbrauch das nützlichere Maß und wird in den statischen Eigenschaften des Sensors über den HAL gemeldet.
Beschleunigungsmesser
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Beschleunigungssensor meldet 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 x-, y- und z-Feldern von „sensors_event_t.acceleration“ gemeldet.
Alle Werte sind in SI-Einheiten (m/s^2) angegeben und messen die Beschleunigung des Geräts abzüglich der Schwerkraft entlang der drei Sensorachsen.
Hier sind 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 der 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 z +9,81 alo, was der Beschleunigung des Geräts (0 m/s^2) minus der Schwerkraft (-9,81 m/s^2) entspricht.
- Wenn das Gerät flach auf einem Tisch liegt und in Richtung Himmel geschoben wird, ist der Beschleunigungswert größer als +9,81, was der Beschleunigung des Geräts (+A m/s^2) minus der Schwerkraft (-9,81 m) entspricht /s^2).
Die Messwerte werden kalibriert mit:
- Temperaturkompensation
- Online-Bias-Kalibrierung
- Online-Waagenkalibrierung
Die Bias- und Skalenkalibrierung darf nur bei deaktiviertem Sensor aktualisiert werden, um Wertesprünge beim Streaming zu vermeiden.
Der Beschleunigungsmesser meldet auch über sensors_event_t.acceleration.status
, wie genau er seine Messwerte erwartet. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den SENSOR_STATUS_*
Konstanten des SensorManager
.
Umgebungstemperatur
Berichtsmodus: Bei Änderung
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
gibt einen Nicht-Wake-up-Sensor zurück
Dieser Sensor liefert die Umgebungstemperatur (Raumtemperatur) in Grad Celsius.
Magnetfeldsensor
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
gibt einen Nicht-Wake-up-Sensor zurück
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
Ein Magnetfeldsensor (auch Magnetometer genannt) meldet das Umgebungsmagnetfeld, gemessen entlang der drei Sensorachsen.
Die Messung wird in den x-, y- und z-Feldern von sensors_event_t.magnetic
gemeldet und alle Werte sind in Mikro-Tesla (uT) angegeben.
Das Magnetometer meldet auch über sensors_event_t.magnetic.status
, wie genau es seine Messwerte erwartet. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den SENSOR_STATUS_*
Konstanten des SensorManager
.
Die Messwerte werden kalibriert mit:
- Temperaturkompensation
- Weicheisenkalibrierung im Werk (oder online).
- Online-Kalibrierung von Harteisen
Gyroskop
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Gyroskopsensor meldet die Rotationsgeschwindigkeit des Geräts um die drei Sensorachsen.
Die Drehung erfolgt positiv gegen den Uhrzeigersinn (Rechte-Hand-Regel). Das heißt, ein Beobachter, der von einer positiven Position auf der x-, y- oder z-Achse auf ein am Ursprung positioniertes Gerät blickt, würde eine positive Drehung melden, wenn sich das Gerät scheinbar gegen den Uhrzeigersinn dreht. Beachten Sie, dass dies die standardmäßige mathematische Definition der positiven Rotation ist und nicht mit der Luft- und Raumfahrtdefinition von Roll übereinstimmt.
Die Messung wird in den Feldern x, y und z von sensors_event_t.gyro
gemeldet und alle Werte sind im Bogenmaß pro Sekunde (rad/s) angegeben.
Die Messwerte werden kalibriert mit:
- Temperaturkompensation
- Kompensation im Werksmaßstab (oder online).
- Online-Bias-Kalibrierung (um Drift zu entfernen)
Das Gyroskop meldet auch über sensors_event_t.gyro.status
, wie genau es seine Messwerte erwartet. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den SENSOR_STATUS_*
Konstanten des SensorManager
.
Das Gyroskop kann nicht auf Basis von Magnetometern und Beschleunigungsmessern emuliert werden, da dies zu einer verringerten lokalen Konsistenz und Reaktionsfähigkeit führen würde. Es muss auf einem üblichen Gyroskop-Chip basieren.
Pulsschlag
Berichtsmodus: Bei Änderung
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Herzfrequenzsensor meldet die aktuelle Herzfrequenz der Person, die das Gerät berührt.
Die aktuelle Herzfrequenz in Schlägen pro Minute (BPM) wird in sensors_event_t.heart_rate.bpm
“ und der Status des Sensors in sensors_event_t.heart_rate.status
gemeldet. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den SENSOR_STATUS_*
Konstanten des SensorManager
. Insbesondere muss bei der ersten Aktivierung, sofern nicht bekannt ist, dass sich das Gerät nicht am Körper befindet, das Statusfeld des ersten Ereignisses auf SENSOR_STATUS_UNRELIABLE
gesetzt werden. Da sich dieser Sensor ändert, 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 jede sampling_period
generiert.
sensor_t.requiredPermission
ist immer SENSOR_PERMISSION_BODY_SENSORS
.
Licht
Berichtsmodus: Bei Änderung
getDefaultSensor(SENSOR_TYPE_LIGHT)
gibt einen Nicht-Weck-Sensor zurück
Ein Lichtsensor meldet die aktuelle Beleuchtung in SI-Lux-Einheiten.
Die Messung wird in sensors_event_t.light
gemeldet.
Nähe
Berichtsmodus: Bei Änderung
Normalerweise als Wecksensor definiert
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
gibt einen Wecksensor zurück
Ein Näherungssensor meldet den Abstand vom Sensor zur nächstgelegenen sichtbaren Oberfläche.
Bis Android 4.4 waren die Näherungssensoren immer Wake-up-Sensoren, die den SoC aufweckten, wenn eine Änderung der Nähe erkannt wurde. Nach Android 4.4 empfehlen wir, zunächst die Weckversion dieses Sensors zu implementieren, da dieser zum Ein- und Ausschalten des Bildschirms beim Telefonieren verwendet wird.
Die Messung wird in Zentimetern in sensors_event_t.distance
angegeben. Beachten Sie, dass einige Näherungssensoren nur eine binäre „Nah“- oder „Fern“-Messung unterstützen. In diesem Fall meldet der Sensor seinen sensor_t.maxRange
Wert im Zustand „fern“ und einen Wert kleiner als sensor_t.maxRange
im Zustand „nah“.
Druck
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_PRESSURE)
gibt einen nicht aufweckbaren Sensor zurück
Ein Drucksensor (auch Barometer genannt) meldet den Luftdruck in Hektopascal (hPa).
Die Messwerte werden mit kalibriert
- Temperaturkompensation
- Werkseitige Bias-Kalibrierung
- Kalibrierung im Werksmaßstab
Das Barometer wird häufig zur Schätzung von Höhenänderungen verwendet. Um die absolute Höhe abzuschätzen, muss der Meeresspiegeldruck (der sich je nach Wetterlage ändert) als Referenz verwendet werden.
Relative Luftfeuchtigkeit
Berichtsmodus: Bei Änderung
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Sensor für relative Luftfeuchtigkeit misst die relative Luftfeuchtigkeit der Umgebungsluft und gibt einen Wert in Prozent zurück.
Zusammengesetzte Sensortypen
Ein zusammengesetzter Sensor generiert Daten durch die Verarbeitung und/oder Fusion von Daten von einem oder mehreren physischen Sensoren. (Jeder Sensor, der kein Basissensor ist, wird als Verbundsensor bezeichnet.) Beispiele für Verbundsensoren sind:
- Schrittdetektor und signifikante Bewegung , die normalerweise auf einem Beschleunigungsmesser basieren, könnten aber auch auf anderen Sensoren basieren, wenn der Stromverbrauch und die Genauigkeit akzeptabel wären.
- Spielrotationsvektor , basierend auf einem Beschleunigungsmesser und einem Gyroskop.
- Unkalibriertes Gyroskop , das dem Gyroskop-Basissensor ähnelt, wobei die Bias-Kalibrierung jedoch separat gemeldet wird, anstatt in der Messung korrigiert zu werden.
Wie bei Basissensoren ergeben sich die Eigenschaften der Verbundsensoren aus den Eigenschaften ihrer Enddaten. Beispielsweise ist der Stromverbrauch eines Spielrotationsvektors wahrscheinlich gleich der Summe des Stromverbrauchs des Beschleunigungsmesser-Chips, des Gyroskop-Chips, des Chips, der die Daten verarbeitet, und der Busse, die die Daten transportieren. Als weiteres Beispiel hängt die Drift eines Wildrotationsvektors sowohl von der Qualität des Kalibrierungsalgorithmus als auch von den physikalischen Sensoreigenschaften ab.
In der folgenden Tabelle sind die verfügbaren Verbundsensortypen aufgeführt. Jeder zusammengesetzte Sensor basiert auf Daten von einem oder mehreren physischen Sensoren. Vermeiden Sie die Auswahl anderer zugrunde liegender physischer Sensoren zur Annäherung an die Ergebnisse, da diese ein schlechtes Benutzererlebnis bieten.
Sensorart | Kategorie | Zugrunde liegende physikalische Sensoren | Berichtsmodus |
---|---|---|---|
Attitüde | Beschleunigungsmesser, Gyroskop, Magnetometer DÜRFEN NICHT VERWENDET WERDEN | Kontinuierlich | |
Attitüde | Beschleunigungsmesser, Magnetometer, Gyroskop DARF NICHT VERWENDET WERDEN | Kontinuierlich | |
Blickgeste ![]() | Interaktion | Nicht definiert | One-Shot |
Attitüde | Beschleunigungsmesser, Gyroskop | Kontinuierlich | |
Unkalibriert | Gyroskop | Kontinuierlich | |
Aktivität | Beschleunigungsmesser, Gyroskop (falls vorhanden) oder Magnetometer (falls kein Gyroskop vorhanden) | Kontinuierlich | |
Unkalibriert | Magnetometer | Kontinuierlich | |
Ausrichtung (veraltet) | Attitüde | Beschleunigungsmesser, Magnetometer, Gyroskop (falls vorhanden) | Kontinuierlich |
Interaktion | Nicht definiert | One-Shot | |
Attitüde | Beschleunigungsmesser, Magnetometer, Gyroskop | Kontinuierlich | |
Aktivität | Beschleunigungsmesser (oder ein anderer, sofern die Leistung sehr gering ist) | One-Shot | |
Aktivität | Beschleunigungsmesser | Bei Änderung | |
Aktivität | Beschleunigungsmesser | Besonders | |
Aktivität | Beschleunigungsmesser | Besonders | |
Interaktion | Nicht definiert | One-Shot |
= Sensor mit geringer Leistung
Zusammengesetzte Aktivitätssensoren
Lineare Beschleunigung
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser und (falls vorhanden) Gyroskop (oder Magnetometer, falls kein Gyroskop vorhanden)
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
gibt einen Nicht-Wake-up-Sensor zurück
Ein linearer Beschleunigungssensor meldet die lineare Beschleunigung des Geräts im Sensorrahmen, ohne Berücksichtigung der Schwerkraft.
Die Ausgabe ist konzeptionell: Ausgabe des Beschleunigungsmessers minus Ausgabe des Schwerkraftsensors . Die Angabe erfolgt in m/s^2 in den x-, y- und z-Feldern von sensors_event_t.acceleration
.
Die Messwerte auf allen Achsen sollten nahe bei 0 liegen, wenn das Gerät stillsteht.
Wenn das Gerät über ein Gyroskop verfügt, muss der lineare Beschleunigungssensor das Gyroskop und den Beschleunigungsmesser als Eingang verwenden.
Wenn das Gerät kein Gyroskop besitzt, muss der lineare Beschleunigungssensor den Beschleunigungsmesser und das Magnetometer als Eingang verwenden.
Bedeutende Bewegung
Zugrunde liegender physikalischer Sensor: Beschleunigungsmesser (oder ein anderer, sofern die Leistung gering ist)
Berichtsmodus: One-Shot
Geringer Strom
Implementieren Sie nur die Weckversion dieses Sensors.
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
gibt einen Wecksensor zurück
Ein Bewegungsmelder wird ausgelöst, wenn eine erhebliche Bewegung erkannt wird: eine Bewegung, die zu einer Änderung des Standorts des Benutzers führen kann.
Beispiele für solche bedeutenden Anträge sind:
- Zu Fuß oder mit dem Fahrrad
- Sitzen in einem fahrenden Auto, Bus oder Zug
Beispiele für Situationen, die keine nennenswerte Bewegung auslösen:
- Telefon in der Tasche und Person bewegt sich nicht
- Das Telefon liegt auf einem Tisch und der Tisch wackelt aufgrund des Verkehrs oder der Waschmaschine in der Nähe etwas
Auf der hohen Ebene wird der signifikante Bewegungsmelder verwendet, um den Stromverbrauch der Standortbestimmung zu reduzieren. Wenn die Lokalisierungsalgorithmen erkennen, dass das Gerät statisch ist, können sie in einen Energiesparmodus wechseln, in dem sie sich auf deutliche Bewegungen verlassen, um das Gerät aufzuwecken, wenn der Benutzer seinen Standort ändert.
Dieser Sensor muss eine geringe Leistung haben. Dabei muss der Stromverbrauch in Kauf genommen werden, was zu einer geringen Anzahl falsch-negativer Ergebnisse führen kann. Dies geschieht aus mehreren Gründen:
- Das Ziel dieses Sensors ist es, Strom zu sparen.
- Das Auslösen eines Ereignisses, wenn sich der Benutzer nicht bewegt (falsch positiv), ist energieintensiv und sollte daher vermieden werden.
- Es ist akzeptabel, kein Ereignis auszulösen, wenn sich der Benutzer bewegt (falsch negativ), solange dies nicht wiederholt geschieht. Wenn der Benutzer 10 Sekunden lang gelaufen ist, ist es nicht akzeptabel, innerhalb dieser 10 Sekunden kein Ereignis auszulösen.
Jedes Sensorereignis meldet 1
in sensors_event_t.data[0]
.
Schrittdetektor
Zugrunde liegender physikalischer Sensor: Beschleunigungsmesser (+ möglicherweise andere, solange die Leistung niedrig ist)
Berichtsmodus: Speziell (ein Ereignis pro durchgeführtem Schritt)
Geringer Strom
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Schrittdetektor generiert jedes Mal ein Ereignis, wenn der Benutzer einen Schritt ausführt.
Der Zeitstempel des Ereignisses sensors_event_t.timestamp
“ entspricht dem Zeitpunkt, an dem der Fuß den Boden berührte, was zu einer starken Beschleunigungsschwankung führte.
Im Vergleich zum Schrittzähler sollte der Schrittdetektor eine geringere Latenz haben (weniger als zwei Sekunden). Sowohl der Schrittdetektor als auch der Schrittzähler erkennen, wann der Benutzer geht, rennt und die Treppe hinaufgeht. Sie sollten nicht ausgelöst werden, wenn der Benutzer Fahrrad fährt, fährt oder in anderen Fahrzeugen sitzt.
Dieser Sensor muss eine geringe Leistung haben. Das heißt, wenn die Schritterkennung nicht in der Hardware erfolgen kann, sollte dieser Sensor nicht definiert werden. Insbesondere wenn der Schrittdetektor aktiviert ist und der Beschleunigungsmesser nicht, sollten nur Schritte Interrupts auslösen (nicht jeder Beschleunigungsmesserwert).
sampling_period_ns
hat keinen Einfluss auf Schrittdetektoren.
Jedes Sensorereignis meldet 1
in sensors_event_t.data[0]
.
Schrittzähler
Zugrunde liegender physikalischer Sensor: Beschleunigungsmesser (+ möglicherweise andere, solange die Leistung niedrig ist)
Berichtsmodus: Bei Änderung
Geringer Strom
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Schrittzähler meldet die Anzahl der Schritte, die der Benutzer seit dem letzten Neustart bei Aktivierung unternommen hat.
Die Messung wird als uint64_t
in sensors_event_t.step_counter
gemeldet und nur bei einem Systemneustart auf Null zurückgesetzt.
Der Zeitstempel des Ereignisses wird auf den Zeitpunkt gesetzt, zu dem der letzte Schritt für dieses Ereignis ausgeführt wurde.
Die Bedeutung der Zeit eines Schrittes finden Sie unter dem Sensortyp „Schrittdetektor“ .
Im Vergleich zum Schrittdetektor kann der Schrittzähler eine höhere Latenz haben (bis zu 10 Sekunden). Dank dieser Latenzzeit weist dieser Sensor eine hohe Genauigkeit auf; Die Schrittzahl nach einem ganzen Tag mit Maßnahmen sollte innerhalb von 10 % der tatsächlichen Schrittzahl liegen. Sowohl der Schrittdetektor als auch der Schrittzähler erkennen, wann der Benutzer geht, rennt und die Treppe hinaufgeht. Sie sollten nicht ausgelöst werden, wenn der Benutzer Fahrrad fährt, fährt oder in anderen Fahrzeugen sitzt.
Die Hardware muss sicherstellen, dass die interne Schrittzahl niemals überläuft. Die Mindestgröße des hardwareinternen Zählers muss 16 Bit betragen. Im Falle eines drohenden Überlaufs (höchstens alle ~2^16 Schritte) kann der SoC aufgeweckt werden, damit der Treiber die Zählerwartung durchführen kann.
Wie unter „Interaktion“ angegeben, darf dieser Sensor, während er in Betrieb ist, keine anderen Sensoren stören, insbesondere den Beschleunigungsmesser, der durchaus im Einsatz sein könnte.
Wenn ein bestimmtes Gerät diese Betriebsarten 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 eine geringe Leistung haben. Das heißt, wenn die Schritterkennung nicht in Hardware erfolgen kann, sollte dieser Sensor nicht definiert werden. Insbesondere wenn der Schrittzähler aktiviert ist, der Beschleunigungsmesser jedoch nicht, sollten nur Schritte Interrupts auslösen (keine Beschleunigungsmesserdaten).
Neigungsdetektor
Zugrunde liegender physikalischer Sensor: Beschleunigungsmesser (+ möglicherweise andere, solange die Leistung niedrig ist)
Berichtsmodus: Spezial
Geringer Strom
Implementieren Sie nur die Weckversion dieses Sensors.
getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR)
gibt einen Wecksensor zurück
Ein Neigungsdetektor generiert jedes Mal ein Ereignis, wenn ein Neigungsereignis erkannt wird.
Ein Neigungsereignis wird dadurch definiert, dass sich die Richtung der durchschnittlichen Schwerkraft im 2-Sekunden-Fenster seit der Aktivierung oder dem letzten vom Sensor generierten Ereignis um mindestens 35 Grad ändert. 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 Telefonausrichtung sollten kein Neigungsereignis auslösen. Beispielsweise sollte eine scharfe Kurve oder eine starke Beschleunigung beim Autofahren kein Kippereignis auslösen, auch wenn der Winkel der durchschnittlichen Beschleunigung um mehr als 35 Grad variieren kann. Typischerweise wird dieser Sensor nur mit Hilfe eines Beschleunigungsmessers implementiert. Es können auch andere Sensoren verwendet werden, wenn diese den Stromverbrauch nicht wesentlich erhöhen. Dabei handelt es sich um einen Low-Power-Sensor, der es dem SoC ermöglichen soll, in den Suspend-Modus zu wechseln. Emulieren Sie diesen Sensor nicht im HAL. Jedes Sensorereignis meldet 1
in sensors_event_t.data[0]
.
Verbundwerkstoff-Attitude-Sensoren
Rotationsvektor
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser, Magnetometer und Gyroskop
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Rotationsvektorsensor meldet die Ausrichtung des Geräts relativ zum Ost-Nord-Oben-Koordinatenrahmen. Es wird normalerweise durch die Integration von Beschleunigungsmesser-, Gyroskop- und Magnetometermesswerten ermittelt. Das Ost-Nord-Oben-Koordinatensystem ist als direkte orthonormale Basis definiert, wobei:
- X zeigt nach Osten und ist tangential zum Boden.
- Y zeigt nach Norden und ist tangential zum Boden.
- Z zeigt zum Himmel und steht senkrecht zum Boden.
Die Ausrichtung des Telefons wird durch die Drehung dargestellt, die erforderlich ist, um die Ost-Nord-Oben-Koordinaten an den Koordinaten des Telefons auszurichten. Das heißt, wenn man die Drehung auf den Weltrahmen (X,Y,Z) anwendet, werden diese an den Telefonkoordinaten (x,y,z) ausgerichtet.
Die Drehung kann als Drehung des Telefons um einen Winkel Theta um eine Achse rot_axis
angesehen werden, um von der Referenzgeräteausrichtung (Ost-Nord-Oben-Ausrichtung) zur aktuellen Geräteausrichtung zu gelangen. Die Drehung wird als die vier einheitenlosen x-, y-, z- und w-Komponenten 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)
Wo:
- Die x-, y- und z-Felder von
rot_axis
sind die Ost-Nord-Oben-Koordinaten eines Einheitslängenvektors, der die Rotationsachse darstellt -
theta
ist der Rotationswinkel
Die Quaternion ist eine Einheitsquaternion: Sie muss der Norm 1
entsprechen. Wenn dies nicht sichergestellt wird, führt dies zu unberechenbarem Clientverhalten.
Darüber hinaus meldet dieser Sensor eine geschätzte Kursgenauigkeit:
sensors_event_t.data[4] = estimated_accuracy
(im Bogenmaß)
Der Kursfehler muss in 95 % der Fälle kleiner als estimated_accuracy
sein. Dieser Sensor muss ein Gyroskop als Haupteingang für die Ausrichtungsänderung verwenden.
Dieser Sensor verwendet auch Beschleunigungsmesser- und Magnetometer-Eingänge, um die Gyroskopdrift auszugleichen, und kann nicht nur mit Beschleunigungsmesser und Magnetometer implementiert werden.
Spielrotationsvektor
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser und Gyroskop (kein Magnetometer)
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Rotationsvektorsensor für Wild ähnelt einem Rotationsvektorsensor, nutzt jedoch nicht das Erdmagnetfeld. Daher zeigt die Y-Achse nicht nach Norden, sondern auf eine andere Referenz. Diese Referenz darf um die gleiche Größenordnung driften wie das Gyroskop um die Z-Achse.
Weitere Informationen zum Festlegen sensors_event_t.data[0-3]
finden Sie im Abschnitt „Rotationsvektorsensor“ . Dieser Sensor meldet keine geschätzte Kursgenauigkeit: sensors_event_t.data[4]
ist reserviert und sollte auf 0
gesetzt werden.
Im Idealfall sollte ein Telefon, das gedreht und in die gleiche reale Ausrichtung zurückgebracht wird, denselben Rotationsvektor im Spiel melden.
Dieser Sensor muss auf einem Gyroskop und einem Beschleunigungsmesser basieren. Es kann kein Magnetometer als Eingabe verwenden, außer indirekt durch Schätzung der Gyroskopvorspannung.
Schwere
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser und (falls vorhanden) Gyroskop (oder Magnetometer, falls kein Gyroskop vorhanden)
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_GRAVITY)
gibt einen Nicht-Wake-up-Sensor zurück
Ein Schwerkraftsensor meldet die Richtung und Stärke der Schwerkraft in den Koordinaten des Geräts.
Die Schwerkraftvektorkomponenten werden in m/s^2 in den x-, y- und z-Feldern von sensors_event_t.acceleration
angegeben.
Im Ruhezustand des Geräts sollte die Ausgabe des Schwerkraftsensors mit der des Beschleunigungsmessers identisch sein. Auf der Erde beträgt die Magnitude etwa 9,8 m/s^2.
Wenn das Gerät über ein Gyroskop verfügt, muss der Schwerkraftsensor das Gyroskop und den Beschleunigungsmesser als Eingabe verwenden.
Wenn das Gerät kein Gyroskop besitzt, muss der Schwerkraftsensor den Beschleunigungsmesser und das Magnetometer als Eingabe verwenden.
Geomagnetischer Rotationsvektor
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser und Magnetometer (kein Gyroskop)
Berichtsmodus: Kontinuierlich
Geringer Strom
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
gibt einen Nicht-Wake-up-Sensor zurück
Ein geomagnetischer Rotationsvektor ähnelt einem Rotationsvektorsensor, verwendet jedoch ein Magnetometer und kein Gyroskop.
Dieser Sensor muss auf einem Magnetometer basieren. Es kann nicht mit einem Gyroskop implementiert werden und der Gyroskopeingang kann von diesem Sensor nicht verwendet werden.
Weitere Informationen zum Festlegen sensors_event_t.data[0-4]
finden Sie im Abschnitt „Rotationsvektorsensor“ .
Genau wie beim Rotationsvektorsensor muss der Kursfehler in 95 % der Fälle geringer sein als die geschätzte Genauigkeit ( sensors_event_t.data[4]
).
Dieser Sensor muss stromsparend sein und muss daher in Hardware implementiert werden.
Ausrichtung (veraltet)
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser, Magnetometer und (falls vorhanden) Gyroskop
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
gibt einen Nicht-Wake-up-Sensor zurück
Hinweis: Dies ist ein älterer Sensortyp, der im Android SDK veraltet ist. Er wurde durch den Rotationsvektorsensor ersetzt, der klarer definiert ist. Verwenden Sie nach Möglichkeit den Rotationsvektorsensor anstelle des Ausrichtungssensors.
Ein Orientierungssensor meldet die Lage des Geräts. Die Messungen werden in Grad in den x-, y- und z-Feldern von sensors_event_t.orientation
angegeben:
-
sensors_event_t.orientation.x
: Azimut, der Winkel zwischen der magnetischen Nordrichtung und der Y-Achse, um die Z-Achse (0<=azimuth<360
). 0=Norden, 90=Osten, 180=Süden, 270=Westen. -
sensors_event_t.orientation.y
: Steigung, Drehung um die X-Achse (-180<=pitch<=180
), mit positiven Werten, wenn sich die Z-Achse in Richtung der Y-Achse bewegt. -
sensors_event_t.orientation.z
: Rollen, Drehung um die Y-Achse (-90<=roll<=90
), mit positiven Werten, wenn sich die X-Achse in Richtung der Z-Achse bewegt.
Bitte beachten Sie, dass der Rollwinkel aus historischen Gründen im Uhrzeigersinn positiv ist. (Mathematisch gesehen sollte es gegen den Uhrzeigersinn positiv sein):
![Darstellung der Ausrichtung relativ zu einem Gerät](https://source.android.com/static/docs/core/interaction/sensors/images/axis_positive_roll.png?authuser=7&hl=de)
Abbildung 3. Ausrichtung relativ zu einem Gerät
Diese Definition unterscheidet sich von der in der Luftfahrt verwendeten Gier-, Nick- und Rollbewegung, bei der die X-Achse entlang der Längsseite des Flugzeugs verläuft (Heck bis Nase).
Der Orientierungssensor meldet auch über sensors_event_t.orientation.status
, wie genau er seine Messwerte erwartet. Weitere Informationen zu möglichen Werten für dieses Feld finden Sie in den SENSOR_STATUS_*
Konstanten des SensorManager
.
Unkalibrierte Sensoren
Nicht kalibrierte Sensoren liefern mehr Rohergebnisse und können eine gewisse Verzerrung aufweisen, weisen aber auch weniger „Sprünge“ aufgrund der durch die Kalibrierung vorgenommenen Korrekturen auf. Einige Apps bevorzugen diese unkalibrierten Ergebnisse möglicherweise als flüssiger und zuverlässiger. Wenn eine App beispielsweise versucht, ihre eigene Sensorfusion durchzuführen, kann die Einführung von Kalibrierungen die Ergebnisse tatsächlich verfälschen.
Beschleunigungsmesser nicht kalibriert
Zugrunde liegender physikalischer Sensor: Beschleunigungsmesser
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
gibt einen Nicht-Wake-up-Sensor zurück
Ein unkalibrierter Beschleunigungssensor meldet die Beschleunigung des Geräts entlang der drei Sensorachsen ohne jegliche Bias-Korrektur (werkseitige Bias- und Temperaturkompensation werden auf unkalibrierte Messungen angewendet) zusammen mit einer Bias-Schätzung. Alle Werte sind in SI-Einheiten (m/s^2) angegeben und werden in den Feldern sensors_event_t.uncalibrated_accelerometer
angegeben:
-
x_uncalib
: Beschleunigung (ohne Bias-Kompensation) entlang der X-Achse -
y_uncalib
: Beschleunigung (ohne Bias-Kompensation) entlang der Y-Achse -
z_uncalib
: Beschleunigung (ohne Bias-Kompensation) entlang der Z-Achse -
x_bias
: geschätzte Vorspannung entlang der X-Achse -
y_bias
: geschätzte Abweichung entlang der Y-Achse -
z_bias
: geschätzte Vorspannung entlang der Z-Achse
Gyroskop unkalibriert
Zugrunde liegender physikalischer Sensor: Gyroskop
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED)
gibt einen Nicht-Wake-up-Sensor zurück
Ein unkalibriertes Gyroskop meldet die Rotationsrate um die Sensorachsen, ohne eine Bias-Kompensation auf sie anzuwenden, zusammen mit einer Bias-Schätzung. Alle Werte sind im Bogenmaß/Sekunde angegeben und werden in den Feldern von sensors_event_t.uncalibrated_gyro
gemeldet:
-
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 Drift um die X-Achse -
y_bias
: geschätzte Drift um die Y-Achse -
z_bias
: geschätzte Drift um die Z-Achse
Konzeptionell ist die unkalibrierte Messung die Summe der kalibrierten Messung und der Bias-Schätzung: _uncalibrated = _calibrated + _bias
.
Es wird erwartet, dass die Werte x_bias
, y_bias
und z_bias
ansteigen, sobald sich die Schätzung des Bias ändert, und sie sollten für den Rest der Zeit stabil bleiben.
Einzelheiten zum verwendeten Koordinatensystem finden Sie in der Definition des Gyroskopsensors .
Die Messungen müssen werkseitig kalibriert und temperaturkompensiert werden. Außerdem muss die Schätzung der Gyroskopdrift implementiert werden, damit vernünftige Schätzungen in x_bias
, y_bias
und z_bias
gemeldet werden können. Wenn die Implementierung die Drift nicht abschä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 die gleichen Werte sensor_t.name
und sensor_t.vendor
haben.
Magnetfeld unkalibriert
Zugrunde liegender physikalischer Sensor: Magnetometer
Berichtsmodus: Kontinuierlich
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED)
gibt einen Nicht-Wake-up-Sensor zurück
Ein unkalibrierter Magnetfeldsensor meldet das Umgebungsmagnetfeld zusammen mit einer Schätzung der Harteisenkalibrierung. Alle Werte sind in Mikro-Tesla (uT) angegeben und werden in den Feldern sensors_event_t.uncalibrated_magnetic
angegeben:
-
x_uncalib
: Magnetfeld (ohne Harteisenkompensation) entlang der X-Achse -
y_uncalib
: Magnetfeld (ohne Harteisenkompensation) entlang der Y-Achse -
z_uncalib
: Magnetfeld (ohne Harteisenkompensation) entlang der Z-Achse -
x_bias
: geschätzte Harteisen-Vorspannung entlang der X-Achse -
y_bias
: geschätzter Harteisen-Bias entlang der Y-Achse -
z_bias
: geschätzte Harteisen-Vorspannung entlang der Z-Achse
Konzeptionell ist die unkalibrierte Messung die Summe der kalibrierten Messung und der Bias-Schätzung: _uncalibrated = _calibrated + _bias
.
Das unkalibrierte Magnetometer ermöglicht es höheren Algorithmen, schlechte Harteisenschätzungen zu verarbeiten. Es wird erwartet, dass die Werte x_bias
, y_bias
und z_bias
ansteigen, sobald sich die Schätzung des Harteisens ändert, und für den Rest der Zeit sollten sie stabil bleiben.
Bei den Messungen müssen Weicheisenkalibrierung und Temperaturkompensation angewendet werden. Außerdem muss eine Harteisenschätzung implementiert werden, damit vernünftige Schätzungen in x_bias
, y_bias
und z_bias
gemeldet werden können. Wenn die Implementierung den Bias nicht abschä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 Werte sensor_t.name
und sensor_t.vendor
aufweisen.
Scharnierwinkel
Berichtsmodus: Bei Änderung
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
gibt einen Wecksensor zurück
Ein Scharnierwinkelsensor misst den Winkel in Grad zwischen zwei integralen Teilen des Geräts. Es wird erwartet, dass die von diesem Sensortyp gemessene Bewegung eines Scharniers die Art und Weise verändert, wie der Benutzer mit dem Gerät interagieren kann, indem er beispielsweise ein Display aufklappt oder freigibt.
Interaktionsverbundsensoren
Einige Sensoren werden hauptsächlich zur Erkennung von Interaktionen mit dem Benutzer verwendet. Wir definieren nicht, wie diese Sensoren implementiert werden müssen, aber sie müssen einen geringen Stromverbrauch haben und es liegt in der Verantwortung des Geräteherstellers, ihre Qualität im Hinblick auf die Benutzererfahrung zu überprüfen.
Aufwachen-Geste
Zugrunde liegende physikalische Sensoren: Undefiniert (alles mit geringer Leistung)
Berichtsmodus: One-Shot
Geringer Strom
Implementieren Sie nur die Weckversion dieses Sensors.
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
gibt einen Wecksensor zurück
Ein Weckgestensensor ermöglicht das Aufwecken des Geräts basierend auf einer gerätespezifischen Bewegung. Wenn dieser Sensor auslöst, verhält sich das Gerät so, als ob der Netzschalter gedrückt würde, und schaltet den Bildschirm ein. Dieses Verhalten (Einschalten des Bildschirms, wenn dieser Sensor auslöst) kann vom Benutzer in den Geräteeinstellungen deaktiviert werden. Änderungen in den Einstellungen beeinflussen nicht das Verhalten des Sensors: Nur ob das Framework den Bildschirm beim Auslösen einschalten. Die tatsächliche zu erkannte Geste ist nicht angegeben und kann vom Hersteller des Geräts ausgewählt werden.
Dieser Sensor muss eine geringe Leistung sein, da er wahrscheinlich rund um die Uhr aktiviert wird.
Jedes Sensorereignis berichtet 1
in sensors_event_t.data[0]
.
Geste aufnehmen
Zugrunde liegende physikalische Sensoren: undefiniert (alles geringe Leistung)
Berichtsmodus: One-Shot
Geringer Strom
Implementieren Sie nur die Weckversion dieses Sensors.
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
gibt einen Wecksensor zurück
Ein Pick-up-Gestensensor löst sich aus, wenn das Gerät abgeholt wird, unabhängig davon, wo es sich vor dem Vorgang befand (Schreibtisch, Tasche, Tasche).
Jedes Sensorereignis berichtet 1
in sensors_event_t.data[0]
.
Blick Geste
Zugrunde liegende physikalische Sensoren: undefiniert (alles geringe Leistung)
Berichtsmodus: One-Shot
Geringer Strom
Implementieren Sie nur die Weckversion dieses Sensors.
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
gibt einen Wecksensor zurück
Ein Blick auf einen Blick zu Gestensensor ermöglicht es kurz, den Bildschirm einzuschalten, damit der Benutzer auf dem Bildschirm basierend auf einer bestimmten Bewegung einen Blick auf den Bildschirm werfen kann. Wenn dieser Sensor ausgelöst wird, schaltet das Gerät den Bildschirm momentan ein, damit der Benutzer einen Blick benachrichtigen oder andere Inhalte ansieht, während das Gerät in einem nicht-interaktiven Zustand (Döste) gesperrt bleibt, dann wird der Bildschirm wieder ausgeschaltet. Dieses Verhalten (kurz einschalten, wenn dieser Sensor ausgelöst wird) könnte vom Benutzer in den Geräteeinstellungen deaktiviert werden. Änderungen in den Einstellungen haben keinen Einfluss auf das Verhalten des Sensors: Nur ob das Framework den Bildschirm kurz einschaltet, wenn er ausgelöst wird. Die tatsächliche zu erkannte Geste ist nicht angegeben und kann vom Hersteller des Geräts ausgewählt werden.
Dieser Sensor muss eine geringe Leistung sein, da er wahrscheinlich rund um die Uhr aktiviert wird. Jedes Sensorereignis berichtet 1
in sensors_event_t.data[0]
.
Begrenzte Achsen IMU -Sensoren
Erhältlich bei Android 13, limitierte Achsen imu -Sensoren sind Sensoren, die Anwendungsfälle unterstützen, bei denen nicht alle drei Achsen (x, y, z) verfügbar sind. Standard -IMU -Typen in Android (wie SENSOR_TYPE_ACCELEROMETER
und SENSOR_TYPE_GYROSCOPE
) gehen davon aus, dass alle drei Achsen unterstützt werden. Allerdings unterstützen nicht alle Formfaktoren und Geräte die 3-Achsen-Beschleunigungsmesser und 3-Achsen-Gyroskope.
Beschleunigungsmesser begrenzte Achsen
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser
Berichtsmodus: kontinuierlich
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
gibt einen Nicht-Wach-Sensor zurück
Ein Beschleunigungsmesser -Sensor für begrenzte Achsen entspricht dem TYPE_ACCELEROMETER
, unterstützt jedoch Fälle, in denen ein oder zwei Achsen nicht unterstützt werden.
Die letzten drei vom Sensor gemeldeten Sensorereignisse stellen dar, ob der Beschleunigungswert für X, Y und Z -Achsen unterstützt werden. Ein Wert von 1.0
zeigt an, dass die Achse unterstützt wird und ein Wert von 0
angibt, dass sie nicht unterstützt wird. Die Gerätehersteller identifizieren die unterstützten Achsen zum Bauzeit und die Werte ändern sich während der Laufzeit nicht.
Die Gerätehersteller müssen die Beschleunigungswerte für nicht verwendete Achsen auf 0
einstellen, anstatt undefinierte Werte zu haben.
Gyroskop begrenzte Achsen
Zugrunde liegende physikalische Sensoren: Gyroskop
Berichtsmodus: kontinuierlich
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
gibt einen Nicht-Wach-Sensor zurück
Ein Sensor mit begrenzten Achsen mit Gyroskopen entspricht dem TYPE_GYROSCOPE
, unterstützt jedoch Fälle, in denen ein oder zwei Achsen nicht unterstützt werden.
Die letzten drei vom Sensor gemeldeten Sensorereignisse stellen dar, ob der Winkelgeschwindigkeitswert für x, y und z -Achsen unterstützt werden. Ein Wert von 1.0
zeigt an, dass die Achse unterstützt wird und ein Wert von 0
angibt, dass sie nicht unterstützt wird. Die Gerätehersteller identifizieren die unterstützten Achsen zum Bauzeit und die Werte ändern sich während der Laufzeit nicht.
Die Gerätehersteller müssen die Winkelgeschwindigkeitswerte für nicht verwendete Achsen auf 0
einstellen.
Beschleunigungsmesser begrenzte Achsen unkalibriert
Zugrunde liegende physikalische Sensoren: Beschleunigungsmesser
Berichtsmodus: kontinuierlich
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
gibt einen Nicht-Wach-Sensor zurück
Ein Beschleunigungsmesser begrenzter Achsen, der nicht kalibriert ist, entspricht TYPE_ACCELEROMETER_UNCALIBRATED
unterstützt jedoch Fälle, in denen ein oder zwei Achsen nicht unterstützt werden.
Die letzten drei vom Sensor gemeldeten Sensorereigniswerte stellen dar, ob die Beschleunigungs- und Verzerrungswerte für die X-, Y- und Z -Achsen unterstützt werden. Ein Wert von 1.0
zeigt an, dass die Achse unterstützt wird und ein Wert von 0
angibt, dass sie nicht unterstützt wird. Die Gerätehersteller identifizieren die unterstützten Achsen zum Bauzeit und die Werte ändern sich während der Laufzeit nicht.
Die Gerätehersteller müssen die Beschleunigungs- und Verzerrungswerte für nicht verwendete Achsen auf 0
einstellen.
Gyroskop begrenzte Achsen unkalibriert
Zugrunde liegende physikalische Sensoren: Gyroskop
Berichtsmodus: kontinuierlich
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
gibt einen Nicht-Wach-Sensor zurück
Ein nicht kalibriertes Sensor mit Gyroskop begrenztem Achsen entspricht dem TYPE_GYROSCOPE_UNCALIBRATED
, unterstützt jedoch Fälle, in denen ein oder zwei Achsen nicht unterstützt werden.
Die letzten drei vom Sensor gemeldeten Sensorereignisse stellen dar, ob die Winkelgeschwindigkeits- und Driftwerte für die Achsen x, y und z unterstützt werden. Ein Wert von 1.0
zeigt an, dass die Achse unterstützt wird und ein Wert von 0
angibt, dass sie nicht unterstützt wird. Die Gerätehersteller identifizieren die unterstützten Achsen zum Bauzeit und die Werte ändern sich während der Laufzeit nicht.
Die Gerätehersteller müssen die Winkelgeschwindigkeits- und Driftwerte für nicht verwendete Achsen auf 0
einstellen.
Composite Limited Aches IMU
Zugrunde liegende physikalische Sensoren: Jede Kombination aus 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop, 3-Achsen-Beschleunigungsmesser unkalibriert und 3-Achsen-Gyroskop-unkalibrierte Sensoren.
Berichtsmodus: kontinuierlich
Ein zusammengesetzter IMU-Sensor für zusammengesetzte Achsen entspricht einem IMU-Sensor mit begrenzten Achsen, aber anstatt am HAL unterstützt zu werden, wandelt er die 3-Achsen-Sensordaten in die äquivalenten begrenzten Achsenvarianten um. Diese Verbundsensoren sind nur für Automobilgeräte aktiviert.
Die folgende Tabelle zeigt eine Beispielumwandlung von einem Standard-3-Achse-Beschleunigungsmesser in ein Composite Limited Aches Accelerometer.
Sensorvent -Werte für Sensor_Type_accelerometer | Beispiel Sensor_type_accelerometer SensorEvent | Composite sensor_type_accelerometermetermesser_limited_axes sensorEvent |
---|---|---|
Werte [0] | -0,065 | -0,065 |
Werte [1] | 0,078 | 0,078 |
Werte [2] | 9.808 | 9.808 |
Werte [3] | N / A | 1,0 |
Werte [4] | N / A | 1,0 |
Werte [5] | N / A | 1,0 |
Automobilsensoren
Sensoren zur Unterstützung von Automobilanwendungsfällen.
Überschrift
Unterliegende physikalische Sensoren: Jede Kombination aus GPS, Magnetometer, Beschleunigungsmesser und Gyroskop.
Berichtsmodus: kontinuierlich
getDefaultSensor(SENSOR_TYPE_HEADING)
gibt einen Nicht-Wach-Sensor zurück
Er ist bei Android 13 erhältlich und misst ein Überschriftensensor die Richtung, in der das Gerät relativ zu True North in Grad zeigt. Der Überschriftensensor enthält zwei SensorEvent
. Eine für die gemessene Vorrichtung und eine für die Genauigkeit des bereitgestellten Überschriftenwerts.
Die von diesem Sensor gemeldeten Überschriftenwerte müssen zwischen 0.0
(inklusiv) und 360.0
(exklusiv) liegen, wobei 0
Nord, 90
East, 180
South und 270
West anzeigen.
Die Genauigkeit für diesen Sensor ist mit 68 Prozent Vertrauen definiert. In dem Fall, in dem die zugrunde liegende Verteilung Gaußsche Normalität ist, ist die Genauigkeit eine Standardabweichung. Wenn der Überschriftensensor beispielsweise einen Überschriftenwert von 60 Grad und einen Genauigkeitswert von 10 Grad zurückgibt, besteht eine Wahrscheinlichkeit von 68 Prozent, dass die tatsächliche Überschrift zwischen 50 Grad und 70 Grad liegt.