Sensoren

Sensoren informieren Ihre App über die Beziehung zwischen einem Gerät und der physischen Welt. Sensoren können Ihrer App die Richtung, Ausrichtung und Bewegung des Geräts mitteilen. Diese Sensoren können Dazu beitragen, Dass Ihr Spiel, Ihre Augmented Reality-App oder Hilfs-App nützlicher und interaktiver wird, indem sie eine einzigartige Form von Eingaben bereitstellen, z. B. die Bewegung des Geräts, um die Zeichen auf dem Bildschirm anzuordnen oder zu simulieren, in einem Cockpit zu sein und das Gerät als Lenkrad zu verwenden.

Entscheiden Sie in der Regel von Anfang an, ob Ihre App ausschließlich von Sensoren abhängig ist oder ob Sensoren nur einen zusätzlichen Steuerungsmechanismus bieten. Beispielsweise könnte ein Fahrspiel, das ein Gerät als virtuelles Lenkrad verwendet, alternativ über eine Bildschirm-GUI gesteuert werden – auf diese Weise funktioniert die App unabhängig von den sensoren, die auf dem System verfügbar sind. Andererseits könnte ein Murmelneigungs-Labyrinth so codiert werden, dass es nur auf Systemen funktioniert, die über die entsprechenden Sensoren verfügen. Sie müssen die strategische Entscheidung treffen, ob Sie sich vollständig auf Sensoren verlassen möchten. Beachten Sie, dass ein Maus-/Touch-Steuerungsschema Immersion gegen bessere Kontrolle eintauscht.

Thema Description
Kalibrieren von Sensoren Sensoren auf Basis des Magnetometers – kompass, Neigungsmesser und Ausrichtungssensor – können aufgrund von Umgebungsfaktoren zur Kalibrierung benötigt werden. Die Enumeration MagnetometerAccuracy kann dabei helfen zu bestimmen, welche Maßnahmen zu ergreifen sind, wenn Ihr Gerät neu kalibriert werden muss.
Sensorausrichtung Sensordaten aus der OrientationSensor Klassen werden durch ihre Referenzachsen definiert. Diese Achsen werden durch die Ausrichtung des Geräts im Querformat definiert und rotieren mit dem Gerät, wenn der Benutzer es dreht.
Verwenden des Beschleunigungsmessers Erfahren Sie, wie Sie den Beschleunigungsmesser verwenden, um auf Benutzerbewegungen zu reagieren.
Verwenden des Kompasss Erfahren Sie, wie Sie den Kompass verwenden, um die aktuelle Richtung zu bestimmen.
Verwenden des Gyrometers Erfahren Sie, wie Sie das Gyrometer verwenden, um Änderungen der Benutzerbewegung zu erkennen.
Verwenden des Neigungsmessers Erfahren Sie, wie Sie mithilfe des Neigungsmessers Neigungs-, Roll- und Schwenkwinkel bestimmen.
Verwenden des Lichtsensors Erfahren Sie, wie Sie den Umgebungslichtsensor verwenden, um Änderungen der Beleuchtung zu erkennen.
Verwenden des Ausrichtungssensors Erfahren Sie, wie Sie die Ausrichtungssensoren verwenden, um die Geräteausrichtung zu bestimmen.

Bündelung von Sensordaten

Einige Sensoren unterstützen das Konzept der Batchverarbeitung. Dies variiert je nach verfügbarer Sensor. Wenn ein Sensor batching implementiert, sammelt er mehrere Datenpunkte über ein bestimmtes Zeitintervall und überträgt dann alle daten gleichzeitig. Dies unterscheidet sich vom normalen Verhalten, bei dem ein Sensor seine Messwerte meldet, sobald er eine Messung durchführt. Betrachten Sie das folgende Diagramm, das zeigt, wie Daten gesammelt und dann übermittelt werden, zuerst mit normaler Zustellung und dann mit batched delivery.

Stapelsammlung von Sensoren

Der Hauptvorteil der Sensorbatchierung besteht darin, die Akkulaufzeit zu verlängern. Wenn die Daten nicht sofort gesendet werden, speichert das Prozessorleistung und verhindert, dass die Daten sofort verarbeitet werden müssen. Teile des Systems können so lange schlafen, bis sie benötigt werden, was zu erheblichen Stromeinsparungen führt.

Sie können beeinflussen, wie oft der Sensor Batches sendet, indem Sie die Latenz anpassen. Beispielsweise verfügt der Accelerometer Sensor über die Eigenschaft ReportLatency. Wenn diese Eigenschaft für eine Anwendung festgelegt ist, sendet der Sensor Daten nach der angegebenen Zeitspanne. Sie können steuern, wie viele Daten über eine bestimmte Latenz gesammelt werden, indem Sie die ReportInterval-Eigenschaft festlegen.

Es gibt einige Vorbehalte, die Sie beim Festlegen der Latenz berücksichtigen müssen. Der erste Vorbehalt besteht darin, dass jeder Sensor eine MaxBatchSize hat, die er basierend auf dem Sensor selbst unterstützen kann. Dies ist die Anzahl der Ereignisse, die der Sensor zwischenspeichern kann, bevor er gezwungen wird, sie zu senden. Wenn Sie MaxBatchSize mit ReportInterval multiplizieren, bestimmt dies den maximalen ReportLatency-Wert . Wenn Sie einen höheren Wert als diesen angeben, wird die maximale Latenz verwendet, sodass keine Daten verloren gehen. Darüber hinaus können mehrere Anwendungen jeweils eine gewünschte Latenz festlegen. Um den Anforderungen aller Anwendungen gerecht zu werden, wird der kürzeste Latenzzeitraum verwendet. Aufgrund dieser Tatsachen entspricht die latenz, die Sie in Ihrer Anwendung festgelegt haben, möglicherweise nicht der beobachteten Latenz.

Wenn ein Sensor Batchberichte verwendet, löscht der Aufruf von GetCurrentReading den aktuellen Datenbatch und startet einen neuen Latenzzeitraum.

Beschleunigungsmesser

Der Accelerometer Sensor misst G-Force-Werte entlang der X-, Y- und Z-Achsen des Geräts und eignet sich hervorragend für einfache bewegungsbasierte Anwendungen. Beachten Sie, dass G-Force-Werte eine Beschleunigung aufgrund der Schwerkraft enthalten. Wenn das Gerät über die SimpleOrientation von FaceUp auf einer Tabelle verfügt, würde der Beschleunigungsmesser -1 G auf der Z-Achse lesen. Beschleunigungsmesser messen daher nicht unbedingt nur die Koordinatenbeschleunigung – die Geschwindigkeitsänderungsrate. Bei Verwendung eines Beschleunigungsmessers müssen Sie zwischen dem Gravitationsvektor und dem linearen Beschleunigungsvektor von Bewegung unterscheiden. Beachten Sie, dass der Gravitationsvektor für ein stationäres Gerät auf 1 normalisiert werden sollte.

Die folgenden Diagramme veranschaulichen:

  • V1 = Vektor 1 = Kraft aufgrund der Schwerkraft
  • V2 = Vektor 2 = -Z-Achse des Chassis des Geräts (zeigt aus der Rückseite des Bildschirms heraus)
  • Θi = Neigungswinkel (Neigung) = Winkel zwischen der –Z-Achse des Gerätegehäuses und dem Schwerkraftvektor

Beschleunigungsmesser Beschleunigungsmessung

Apps, die den Beschleunigungsmessersensor verwenden können, enthalten ein Spiel, bei dem eine Murmel auf dem Bildschirm in die Richtung rollt, in der Sie das Gerät kippen (Gravitationsvektor). Diese Art von Funktionalität spiegelt genau die funktionalität des Inclinometer und kann auch mit diesem Sensor mithilfe einer Kombination aus Neigung und Roll erfolgen. Die Verwendung des Schwerkraftvektors des Beschleunigungsmessers vereinfacht dies etwas, indem ein leicht manipulierter Vektor für die Neigung des Geräts bereitgestellt wird. Ein weiteres Beispiel wäre eine App, die das Knallen einer Peitsche erzeugt, wenn der Benutzer das Gerät schnell durch die Luft schnellt (den linearen Beschleunigungsvektor).

Eine Beispielimplementierung finden Sie unter Verwenden des Beschleunigungsmessers.

Aktivitätssensor

Der Activity Sensor bestimmt den aktuellen Status des an den Sensor angeschlossenen Geräts. Dieser Sensor wird häufig in Fitnessanwendungen verwendet, um zu erkennen, ob ein Nutzer, der ein Gerät bei sich trägt, läuft oder geht. Eine Liste der möglichen Aktivitäten, die von dieser Sensor-API erkannt werden können, finden Sie unter ActivityType.

Eine Beispielimplementierung finden Sie im Beispiel aktivitätssensor.

Höhenmesser

Der Altimeter Sensor gibt einen Wert zurück, der die Höhe des Sensors angibt. Dies ermöglicht es Ihnen, eine Änderung der Höhe in Bezug auf Meter vom Meeresspiegel nachzuverfolgen. Ein Beispiel für eine App, die dies nutzen könnte, wäre eine Lauf-App, die während eines Laufs die Höhenänderungen aufzeichnet, um die verbrannten Kalorien zu berechnen. In diesem Fall können diese Sensordaten mit dem Activity Sensor kombiniert werden, um genauere Nachverfolgungsinformationen bereitzustellen.

Eine Beispielimplementierung finden Sie im Beispiel altimeter.

Barometer

Der BarometerSensor ermöglicht es einer Anwendung, barometrische Messwerte abzurufen. Eine Wetteranwendung könnte diese Informationen verwenden, um den aktuellen Luftdruck bereitzustellen. Dies könnte verwendet werden, um detailliertere Informationen bereitzustellen und potenzielle Wetteränderungen vorherzusagen.

Eine Beispielimplementierung finden Sie im Beispiel Barometer.

Kompass

Der Compass Sensor gibt eine 2D-Richtung in Bezug auf magnetischen Norden zurück, die auf der horizontalen Erdebene basiert. Der Kompasssensor sollte nicht zur Bestimmung bestimmter Geräteausrichtung oder zur Darstellung von Objekten im 3D-Raum verwendet werden. Geografische Merkmale können eine natürliche Degressation in der Überschrift verursachen, sodass einige Systeme sowohl HeadingMagneticNorth als auch HeadingTrueNorth unterstützen. Überlegen Sie, welche Option Ihre App bevorzugt, aber denken Sie daran, dass nicht alle Systeme einen Wert für den geografischen Norden melden. Die Gyrometer- und Magnetometersensoren (ein Gerät zur Messung der magnetischen Stärke) kombinieren ihre Daten, um die Kompassrichtung zu erzeugen, die den Nettoeffekt der Stabilisierung der Daten hat (magnetische Feldstärke ist aufgrund elektrischer Systemkomponenten sehr instabil).

Kompasswerte im Hinblick auf den magnetischen Nordpol

Apps, die eine Kompassrose anzeigen oder in einer Karte navigieren möchten, verwenden in der Regel den Kompasssensor.

Eine Beispielimplementierung finden Sie unter Verwenden des Kompasss.

Gyrometer

Der Gyrometer Sensor misst Winkelgeschwindigkeiten entlang der X-, Y- und Z-Achsen. Diese sind sehr nützlich bei einfachen bewegungsbasierten Apps, die sich nicht mit der Geräteausrichtung befassen, sondern sich um die Drehung des Geräts mit unterschiedlichen Geschwindigkeiten kümmern. Gyrometer können unter Rauschen in den Daten oder einer konstanten Verzerrung entlang einer oder mehrerer Achsen leiden. Sie sollten den Beschleunigungsmesser abfragen, um zu überprüfen, ob sich das Gerät bewegt, damit Sie feststellen können, ob das Gyroskop einen Bias aufweist, und diesen dann in Ihrer App entsprechend kompensieren.

Gyrometer mit Neigung, Rollen und Schwenken

Ein Beispiel für eine App, die den Gyrometersensor verwenden kann, ist ein Spiel, das ein Rouletterad basierend auf einer schnellen Drehung des Geräts dreht.

Ein Beispiel für eine Implementierung finden Sie unter Verwenden des Gyroskops.

Neigungsmesser

Der Inclinometer Sensor gibt die Gier-, Neigungs- und Rollwerte eines Geräts an und eignet sich am besten für Apps, die sich darum kümmern, wie sich das Gerät im Raum befindet. Pitch und Roll werden abgeleitet, indem der Schwerkraftvektor des Beschleunigungsmessers und die Daten aus dem Gyrometer integriert werden. Der Gierwinkel wird aus Magnetometer- und Gyroskopdaten bestimmt (ähnlich wie der Kompasskurs). Neigungsmesser bieten erweiterte Ausrichtungsdaten auf leicht verdauliche und verständliche Weise. Verwenden Sie Neigungsmesser, wenn Sie geräteausrichtung benötigen, aber die Sensordaten nicht bearbeiten müssen.

Neigungsmesser mit Neigungs-, Roll- und Schwenkdaten

Apps, die ihre Ansicht so ändern, dass sie der Ausrichtung des Geräts entsprechen, können den Neigungsmessersensor verwenden. Außerdem würde eine App, die ein Flugzeug anzeigt, das mit dem Schwenken, Neigungswinkel und Roll des Geräts übereinstimmt, auch die Neigungsmesserwerte verwenden.

Ein Beispiel für die Implementierung finden Sie unter Den Neigungsmesser verwenden.

Lichtsensor

Der LightSensor Sensor kann das Umgebungslicht bestimmen, das den Sensor umgibt. Dadurch kann eine App bestimmen, wann sich die Lichteinstellung eines Geräts geändert hat. Zum Beispiel könnte ein Benutzer mit einem Tablet an einem sonnigen Tag von einem Innenraum ins Freie gehen. Eine intelligente Anwendung könnte diesen Wert verwenden, um den Kontrast zwischen dem Hintergrund und der gerenderten Schriftart zu erhöhen. Das würde den Inhalt in der helleren, outdoor-Einstellung noch lesbar machen.

Eine Beispielimplementierung finden Sie unter Verwenden des Lichtsensors.

Ausrichtungssensor

Die Geräteausrichtung wird sowohl durch Quaternion als auch durch eine Drehungsmatrix ausgedrückt. Die OrientationSensor bietet eine hohe Genauigkeit bei der Bestimmung der Position des Geräts im Raum im Hinblick auf absolute Richtung. Die OrientationSensor-Daten werden vom Beschleunigungsmesser, Gyrometer und Magnetometer abgeleitet. Daher können sowohl die Neigungsmesser- als auch die Kompasssensoren aus den Quaternionwerten abgeleitet werden. Quaternionen und Rotationsmatrizen eignen sich gut für fortgeschrittene mathematische Manipulationen und werden häufig in der grafischen Programmierung verwendet. Apps mit komplexer Manipulation sollten den Ausrichtungssensor bevorzugen, da viele Transformationen auf Quaternionen und Drehungsmatrizen basieren.

Ausrichtungssensordaten

Der Ausrichtungssensor wird häufig in erweiterten Augmented Reality-Apps verwendet, die eine Überlagerung auf Ihre Umgebung basierend auf der Richtung zeichnen, in der die Rückseite des Geräts zeigt.

Eine Beispielimplementierung finden Sie unter Verwenden des Ausrichtungssensors.

Schrittzähler

Der Pedometer Sensor verfolgt die Anzahl der Schritte, die der Benutzer mit dem verbundenen Gerät ausführt. Der Sensor ist so konfiguriert, dass die Anzahl der Schritte über einen bestimmten Zeitraum nachverfolgt wird. Mehrere Fitnessanwendungen verfolgen gerne die Anzahl der schritte, um dem Benutzer zu helfen, verschiedene Ziele festzulegen und zu erreichen. Diese Informationen können dann gesammelt und gespeichert werden, um den Fortschritt im Laufe der Zeit anzuzeigen.

Eine Beispielimplementierung finden Sie im Beispiel pedometer.

Näherungssensor

Der Proximity Sensor kann verwendet werden, um anzugeben, ob Objekte vom Sensor erkannt werden. Zusätzlich zur Bestimmung, ob sich ein Objekt innerhalb des Bereichs des Geräts befindet, kann der Näherungssensor auch den Abstand zum erkannten Objekt bestimmen. Ein Beispiel, bei dem dies verwendet werden kann, ist eine Anwendung, die aus einem Ruhezustand hervorgehen möchte, wenn ein Benutzer innerhalb eines bestimmten Bereichs kommt. Das Gerät könnte sich in einem Energiesparzustand befinden, bis der Näherungssensor ein Objekt erkennt und dann in einen aktiveren Zustand wechselt.

Eine Beispielimplementierung finden Sie im Beispiel für den Näherungssensor.

Einfache Ausrichtung

Der SimpleOrientationSensor erkennt die aktuelle Quadrantenausrichtung des angegebenen Geräts oder ob es mit der Vorderseite nach oben oder nach unten zeigt. Es gibt sechs mögliche SimpleOrientationZustände (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Eine Leser-App, die ihre Anzeige basierend auf dem Gerät ändert, das parallel oder senkrecht zum Boden gehalten wird, verwendet die Werte aus dem SimpleOrientationSensor, um zu bestimmen, wie das Gerät gehalten wird.

Ein Beispiel für eine Implementierung finden Sie im Beispiel Simple Orientation Sensor.