Ich bin kürzlich auf einige Websites gestoßen, die auf den Beschleunigungsmesser oder das Gyroskop meines Laptops zuzugreifen scheinen und Änderungen in der Ausrichtung oder Bewegung erkennen.
Wie wird das gemacht? Muss ich ein Ereignis für das window
Objekt abonnieren ?
Auf welchen Geräten (Laptops, Handys, Tablets) funktioniert dies bekanntermaßen?
NB : Ich kenne die Antwort auf diese Frage bereits (teilweise) und werde sie sofort veröffentlichen. Der Grund , dass ich die Frage hier bin Entsendung, ist jeder andere auch , dass Daten des Beschleunigungsmessers wissen zu lassen , ist in Javascript (auf bestimmten Geräten) und die Gemeinschaft herauszufordern zu diesem Thema neue Erkenntnisse zu veröffentlichen. Derzeit scheint es fast keine Dokumentation dieser Funktionen zu geben.
quelle
Antworten:
Der Weg, dies ab 2019 zu tun, ist die Verwendung der
DeviceOrientation
API . Dies funktioniert in den meisten modernen Browsern auf Desktop und Mobile.quelle
Derzeit gibt es drei verschiedene Ereignisse, die möglicherweise ausgelöst werden, wenn sich die Clientgeräte bewegen. Zwei von ihnen konzentrieren sich auf die Orientierung und der letzte auf die Bewegung :
ondeviceorientation
Es ist bekannt, dass es auf der Desktop-Version von Chrome funktioniert, und die meisten Apple-Laptops scheinen über die erforderliche Hardware zu verfügen, damit dies funktioniert. Es funktioniert auch auf Mobile Safari auf dem iPhone 4 mit iOS 4.2. In der Event - Handler - Funktion können Sie zugreifenalpha
,beta
,gamma
Werte für die Ereignisdaten als einziges Argument an die Funktion geliefert.onmozorientation
wird unter Firefox 3.6 und höher unterstützt. Auch hier ist bekannt, dass dies auf den meisten Apple-Laptops funktioniert, aber möglicherweise auch auf Windows- oder Linux-Computern mit Beschleunigungsmesser. In der Event - Handler - Funktion, suchtx
,y
,z
Felder auf den Ereignisdaten geliefert als erstes Argument.ondevicemotion
Es ist bekannt, dass es auf iPhone 3GS + 4 und iPad (beide mit iOS 4.2) funktioniert und Daten zur aktuellen Beschleunigung des Clientgeräts bereitstellt. Die Ereignisdaten an die Behandlungsfunktion durchlaufen hatacceleration
undaccelerationIncludingGravity
, die beide drei Felder für jede Achse:x
,y
,z
Die Beispielwebsite "Erdbebenerkennung" verwendet eine Reihe von
if
Anweisungen, um herauszufinden, an welches Ereignis (in einer etwas priorisierten Reihenfolge) angehängt werden soll, und leitet die empfangenen Daten an eine gemeinsametilt
Funktion weiter:Die konstanten Faktoren 2 und 50 werden verwendet, um die Messwerte aus den beiden letzteren Ereignissen mit denen aus dem ersten "auszurichten", aber dies sind keineswegs präzise Darstellungen. Für dieses einfache "Spielzeug" -Projekt funktioniert es einwandfrei, aber wenn Sie die Daten für etwas Ernsthafteres verwenden müssen, müssen Sie sich mit den Einheiten der Werte vertraut machen, die in den verschiedenen Ereignissen angegeben sind, und sie mit Respekt behandeln :)
quelle
Ich kann der hervorragenden Erklärung im anderen Beitrag keinen Kommentar hinzufügen, wollte aber erwähnen, dass hier eine großartige Dokumentationsquelle zu finden ist .
Es reicht aus, eine Ereignisfunktion für einen Beschleunigungsmesser wie folgt zu registrieren:
mit dem Handler:
Und für das Magnetometer muss ein folgender Event-Handler registriert sein:
mit einem Handler:
Es gibt auch Felder, die im Bewegungsereignis für ein Gyroskop angegeben sind, aber dies scheint nicht allgemein unterstützt zu werden (z. B. hat es auf einem Samsung Galaxy Note nicht funktioniert).
Auf GitHub gibt es einen einfachen Arbeitscode
quelle
Nützlicher Fallback hier: https://developer.mozilla.org/en-US/docs/Web/Events/MozOrientation
quelle