Geräteausrichtung und Bewegung

Pete LePage
Pete LePage

Bewegungs- und Ausrichtungsereignisse des Geräts ermöglichen Zugriff auf das integrierte Beschleunigungsmesser, Gyroskop und Kompass in Mobilgeräten.

Diese Ereignisse können für viele Zwecke verwendet werden: im Gaming-Bereich, um beispielsweise die Richtung oder Handlung einer Figur. In Verbindung mit der Standortbestimmung können sie eine genauere detaillierte Routenführung zu erstellen oder Informationen an einem bestimmten Ort suchen.

Zusammenfassung

  • Erkennt, welche Seite des Geräts oben liegt und wie sich das Gerät dreht.
  • Hier erfahren Sie, wann und wie Sie auf Bewegungs- und Ausrichtungsereignisse reagieren können.

Welches Ziel ist erreicht?

Um die von den Geräteausrichtungs- und Bewegungsereignissen zurückgegebenen Daten zu verwenden, ist es wichtig, die angegebenen Werte zu verstehen.

Earth-Koordinaten-Frame

Der Koordinatenrahmen für die Erde, der durch die Werte X, Y und Z beschrieben wird, ist ausgerichtet. basierend auf der Schwerkraft und der standardmäßigen magnetischen Ausrichtung.

Koordinatensystem
X Die Ost-West-Richtung, wobei Osten positiv ist.
Y Die Nord-Süd-Richtung, wobei Norden positiv ist.
Z Gibt die Aufwärtsrichtung an, senkrecht zum Boden (wobei "up" positiv ist).

Koordinaten-Frame des Geräts

<ph type="x-smartling-placeholder">
</ph> Abbildung eines Gerätekoordinatenrahmens <ph type="x-smartling-placeholder">
</ph> Abbildung eines Gerätekoordinatenrahmens

Der Koordinaten-Frame des Geräts, der durch die Werte x, y und z beschrieben wird, ist ausgerichtet. basierend auf der Mitte des Geräts.

Koordinatensystem
X In der Ebene des Bildschirms positiv auf der rechten Seite
Y In der Ebene des Bildschirms positiv nach oben zeigen.
Z Senkrecht zum Bildschirm oder zur Tastatur, positive Verlängerung weg sind.

Die Ausrichtung auf einem Smartphone oder Tablet basiert auf der üblichen Ausrichtung des Bildschirms. Bei Smartphones und Tablets sind sie geräteabhängig. im Porträtmodus. Für Desktop-Computer oder Laptops ist die Ausrichtung in Bezug auf die Tastatur berücksichtigt werden.

Rotationsdaten

Rotationsdaten werden als Eulerwinkel zurückgegeben. gibt die Anzahl der Abweichungsgrade zwischen den Gerätekoordinaten zurück und den Koordinatenrahmen für die Erde.

Alpha

<ph type="x-smartling-placeholder">
</ph> Abbildung von Alpha im Gerätekoordinatenrahmen <ph type="x-smartling-placeholder">
</ph> Abbildung von Alpha im Gerätekoordinatenrahmen

Die Drehung um die z-Achse. Der Wert für alpha beträgt 0°, wenn oben im ist das Gerät direkt nach Norden ausgerichtet. Wenn das Gerät gegen den Uhrzeigersinn gedreht wird, steigt der Wert alpha an.

Beta

<ph type="x-smartling-placeholder">
</ph> Abbildung eines Gerätekoordinaten-Frames <ph type="x-smartling-placeholder">
</ph> Abbildung einer Betaversion im Gerätekoordinaten-Frame

Die Drehung um die x-Achse. Der Wert für beta beträgt 0°, wenn oben und der Unterseite des Geräts mit gleichem Abstand von der Erdoberfläche entfernt sind. Der Wert nimmt zu, da die Oberseite des Geräts zur Erdoberfläche neigt.

Gamma

<ph type="x-smartling-placeholder">
</ph> Abbildung eines Gerätekoordinaten-Frames <ph type="x-smartling-placeholder">
</ph> Abbildung von Gamma im Koordinatenrahmen des Geräts

Die Drehung um die Y-Achse. Der Wert für gamma beträgt 0°, wenn links und Die rechten Ränder des Geräts haben denselben Abstand zur Erdoberfläche. Der Wert nimmt zu, da die rechte Seite zur Erdoberfläche hin geneigt ist.

Ausrichtung des Geräts

Das Geräteausrichtungsereignis gibt Rotationsdaten zurück, die angeben, wie viel das Gerät mit der Vorderseite nach hinten, seitlich geneigt und, falls das Smartphone oder der Laptop verfügt über einen Kompass, also die Richtung, in die das Gerät zeigt.

Nur sparsam verwenden. Testen Sie, um Unterstützung zu erhalten. Aktualisiere die Benutzeroberfläche nicht bei jedem Ausrichtungsereignis. synchronisieren Sie ihn stattdessen mit requestAnimationFrame.

Wann werden Geräteausrichtungsereignisse verwendet?

Es gibt mehrere Anwendungsfälle für Geräteausrichtungsereignisse. Beispiele:

  • Aktualisieren Sie eine Karte, während sich der Nutzer bewegt.
  • Kleine Anpassungen der Benutzeroberfläche, zum Beispiel das Hinzufügen von Parallaxe-Effekten
  • In Kombination mit der Standortbestimmung kann es für die detaillierte Routenführung verwendet werden.

Unterstützung überprüfen und auf Ereignisse warten

Prüfen Sie zuerst, ob der Browser die Ereignisse unterstützt, um auf DeviceOrientationEvent zu warten. Fügen Sie dann einen Event-Listener an das window-Objekt an, das auf deviceorientation-Ereignisse wartet.

if (window.DeviceOrientationEvent) {
  window.addEventListener('deviceorientation', deviceOrientationHandler, false);
  document.getElementById('doeSupported').innerText = 'Supported!';
}

Geräteausrichtungsereignisse verarbeiten

Das Geräteausrichtungsereignis wird ausgelöst, wenn sich das Gerät bewegt oder sich ändert Ausrichtung. Sie gibt Daten über den Unterschied zwischen dem Gerät in Position in Bezug auf den Earth-Koordinatenrahmen:

Das Ereignis gibt in der Regel drei Attribute zurück: alpha, beta und gamma In Safari Mobile wird ein zusätzlicher Parameter webkitCompassHeading wird mit der Kompassausrichtung zurückgegeben.

Gerätebewegung

Das Geräteausrichtungsereignis gibt Rotationsdaten zurück, die angeben, wie viel das Gerät mit der Vorderseite nach hinten, seitlich geneigt und, falls das Smartphone oder der Laptop verfügt über einen Kompass, also die Richtung, in die das Gerät zeigt.

Verwende die Bewegung des Geräts, wenn die aktuelle Bewegung des Geräts erforderlich ist. rotationRate wird in °/s angegeben. acceleration und accelerationWithGravity werden in m/s2 angegeben. Beachten Sie die Unterschiede zwischen den Browserimplementierungen.

Wann sollten Bewegungsereignisse des Geräts verwendet werden?

Es gibt mehrere Anwendungsfälle für Gerätebewegungsereignisse. Beispiele:

  • Schüttelgeste zum Aktualisieren der Daten
  • In Spielen, um Figuren zu springen oder sich zu bewegen.
  • Für Gesundheits- und Fitness-Apps

Unterstützung überprüfen und auf Ereignisse warten

Wenn Sie auf DeviceMotionEvent warten möchten, müssen Sie zuerst prüfen, ob die Ereignisse Folgendes sind: die im Browser unterstützt werden. Hängen Sie dann einen Event-Listener an window an. Objekt, das devicemotion-Ereignisse überwacht.

if (window.DeviceMotionEvent) {
  window.addEventListener('devicemotion', deviceMotionHandler);
  setTimeout(stopJump, 3 * 1000);
}

Gerätebewegungsereignisse verarbeiten

Das Bewegungsereignis des Geräts wird in einem regelmäßigen Intervall ausgelöst und gibt Daten über Drehung (in °/Sekunde) und Beschleunigung (in m/Sekunde2) des Geräts zu einem bestimmten Zeitpunkt. Einige Geräte haben nicht die erforderliche Hardware um die Wirkung der Schwerkraft auszuschließen.

Das Ereignis gibt vier Eigenschaften zurück: accelerationIncludingGravity, acceleration ohne die Auswirkungen von Schwerkraft, rotationRate und interval.

Sehen wir uns zum Beispiel ein Smartphone an, das auf einem flachen Tisch liegt und dessen Display nach oben zeigen.

Status Rotation Beschleunigung (m/s2) Beschleunigung mit Schwerkraft (m/s2)
Nicht bewegen [0, 0, 0] [0, 0, 0] [0, 0, 9,8]
Nach oben zum Himmel bewegen [0, 0, 0] [0, 0, 5] [0, 0, 14,81]
Wird nur nach rechts verschoben [0, 0, 0] [3, 0, 0] [3, 0, 9,81]
Nach oben und nach rechts bewegen [0, 0, 0] [5, 0, 5] [5, 0, 14,81]

Wenn das Smartphone aber so gehalten wird, dass es senkrecht zur und war direkt für den Betrachter sichtbar:

Status Rotation Beschleunigung (m/s2) Beschleunigung mit Schwerkraft (m/s2)
Nicht bewegen [0, 0, 0] [0, 0, 0] [0, 9,81, 0]
Nach oben zum Himmel bewegen [0, 0, 0] [0, 5, 0] [0, 14,81, 0]
Wird nur nach rechts verschoben [0, 0, 0] [3, 0, 0] [3, 9,81, 0]
Nach oben und nach rechts bewegen [0, 0, 0] [5, 5, 0] [5, 14,81, 0]

Beispiel: Maximale Beschleunigung eines Objekts berechnen

Eine Möglichkeit, Bewegungsereignisse des Geräts zu nutzen, besteht darin, die maximale Beschleunigung zu berechnen eines Objekts. Wie hoch ist etwa die maximale Beschleunigung einer Person Springen?

if (evt.acceleration.x > jumpMax.x) {
  jumpMax.x = evt.acceleration.x;
}
if (evt.acceleration.y > jumpMax.y) {
  jumpMax.y = evt.acceleration.y;
}
if (evt.acceleration.z > jumpMax.z) {
  jumpMax.z = evt.acceleration.z;
}

Nachdem Sie auf die Schaltfläche Los werden die Nutzenden aufgefordert, zu springen. Während dieser Zeit werden auf der Seite die maximalen und minimalen Werte für die Beschleunigung gespeichert. und teilt dem Nutzer die maximale Beschleunigung mit.

Feedback