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-/Touchsteuerungsschema die Immersion für eine bessere Kontrolle verwendet.

Thema Beschreibung
Kalibrieren von Sensoren Sensoren auf Basis des Magnetometers – kompass, Neigungsmesser und Ausrichtungssensor – können aufgrund von Umgebungsfaktoren zur Kalibrierung benötigt werden. Die MagnetometerAccuracy-Aufzählung kann helfen, einen Handlungsverlauf zu bestimmen, wenn Ihr Gerät eine Kalibrierung benötigt.
Sensorausrichtung Sensordaten aus den OrientationSensor-Klassen werden durch ihre Referenzachsen definiert. Diese Achsen werden durch die Querformatausrichtung des Geräts definiert und mit dem Gerät gedreht, wenn der Benutzer sie 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.

Sensorbatching

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 Ergebnisse meldet, sobald er eine Leserichtung 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.

Sensorbatchauflistung

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. Der Beschleunigungsmessersensor verfügt beispielsweise über die ReportLatency-Eigenschaft. 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 Beschleunigungsmessersensor misst G-Force-Werte entlang der X-, Y- und Z-Achse 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 = Vector 2 = -Z-Achse des Geräte-Chassis (verweist auf die Rückseite des Bildschirms)
  • Θi = Neigungswinkel (Neigung) = Winkel zwischen –Z-Achse des Geräte-Chassis und Schwerkraftvektor

BeschleunigungsmesserBeschleunigungsmessermessung

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 des Neigungsmessers und könnte 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 den Risssound eines Peitschens bewirkt, wenn der Benutzer das Gerät durch die Luft streicht (linearer Beschleunigungsvektor).

Eine Beispielimplementierung finden Sie im Beschleunigungsmesserbeispiel.

Aktivitätssensor

Der Aktivitätssensor bestimmt den aktuellen Status des an den Sensor angeschlossenen Geräts. Dieser Sensor wird häufig in Fitnessanwendungen verwendet, um nachzuverfolgen, wenn ein Benutzer, der ein Gerät trägt, läuft oder läuft. Eine Liste möglicher Aktivitäten, die von dieser Sensor-API erkannt werden können, finden Sie unter ActivityType.

Eine Beispielimplementierung finden Sie im Beispiel für den 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 verwenden kann, wäre eine ausgeführte App, die die Erhöhungsänderungen während eines Laufs nachverfolgt, um die verbrauchten Kalorien zu berechnen. In diesem Fall könnten diese Sensordaten mit dem Aktivitätssensor kombiniert werden, um genauere Tracking-Informationen bereitzustellen.

Eine Beispielimplementierung finden Sie im Beispiel für einen Zeitmesser.

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 Barometerbeispiel.

Compass

Der Kompasssensor gibt eine 2D-Richtung in Bezug auf magnetischen Norden basierend auf der horizontalen Ebene der Erde zurück. 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 App ihre App bevorzugt, aber denken Sie daran, dass nicht alle Systeme einen echten Nordwert 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 im Kompassbeispiel.

Gyrometer

Der Gyrometersensor misst Winkelgeschwindigkeiten entlang der X-, Y- und Z-Achse. 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 das Gerät bewegt wird, um festzustellen, ob das Gyrometer unter einer Verzerrung leidet, und dann in Ihrer App entsprechend entschädigen.

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.

Eine Beispielimplementierung finden Sie im Gyrometerbeispiel.

Inclinometer

Der Neigungsmessersensor 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. Gieren werden aus Magnetometer- und Gyrometerdaten (ähnlich wie Kompassrichtung) hergestellt. 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.

Eine Beispielimplementierung finden Sie im Neigungsmesserbeispiel https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometer.

Lichtsensor

Der Lichtsensor ist in der Lage, das Umgebungslicht um den Sensor zu bestimmen. Dadurch kann eine App bestimmen, wann sich die Lichteinstellung eines Geräts geändert hat. Beispielsweise kann ein Benutzer mit einem Schiefergerät an einem sonnigen Tag von innen nach draußen 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 im Beispiel für einen Lichtsensor.

Ausrichtungssensor

Die Geräteausrichtung wird sowohl durch Quaternion als auch durch eine Drehungsmatrix ausgedrückt. Der OrientationSensor bietet ein hohes Maß an Präzision bei der Bestimmung der Position des Geräts im Raum in Bezug 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 im Beispiel für einen Ausrichtungssensor.

Schrittzähler

Der Pedometersensor 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.

Ein Beispiel für eine Implemenation finden Sie im Beispiel für Schrittzähler.

Näherungssensor

Der Näherungssensor 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 es ist face-up oder face-down. Es verfügt über sechs mögliche SimpleOrientation-Zustä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.

Eine Beispielimplementierung finden Sie im Beispiel für einen einfachen Ausrichtungssensor.