RelativeOrientationSensor
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die RelativeOrientationSensor
-Schnittstelle der Sensor-APIs beschreibt die physische Orientierung des Geräts ohne Berücksichtigung des Referenzkoordinatensystems der Erde.
Um diesen Sensor zu verwenden, muss der Benutzer den Zugriff auf die Gerätesensoren 'accelerometer'
und 'gyroscope'
über die Permissions API gewähren. Zusätzlich kann diese Funktion durch eine auf Ihrem Server gesetzte Permissions Policy blockiert werden.
Konstruktor
RelativeOrientationSensor()
-
Erstellt ein neues
RelativeOrientationSensor
-Objekt.
Instanz-Eigenschaften
Keine spezifischen Eigenschaften; erbt Eigenschaften von seinen Vorfahren OrientationSensor
und Sensor
.
Instanz-Methoden
Keine spezifischen Methoden; erbt Methoden von seinen Vorfahren OrientationSensor
und Sensor
.
Ereignisse
Keine spezifischen Ereignisse; erbt Ereignisse von seinem Vorfahren, Sensor
.
Beispiele
Einfaches Beispiel
Das folgende Beispiel, das lose auf Intels Orientation Phone Demo basiert, instanziiert einen RelativeOrientationSensor
mit einer Frequenz von 60 Mal pro Sekunde.
Hinweis: Das Intel-Demo, auf dem dies basiert, verwendet den AbsoluteOrientationSensor
. Bei jeder Ablesung wird OrientationSensor.quaternion
verwendet, um ein visuelles Modell eines Telefons zu drehen.
const options = { frequency: 60, referenceFrame: "device" };
const sensor = new RelativeOrientationSensor(options);
sensor.addEventListener("reading", () => {
// model is a Three.js object instantiated elsewhere.
model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener("error", (error) => {
if (event.error.name === "NotReadableError") {
console.log("Sensor is not available.");
}
});
sensor.start();
Berechtigungs-Beispiel
Die Verwendung von Orientierungssensoren erfordert das Anfordern von Berechtigungen für mehrere Gerätesensoren. Da die Permissions
-Schnittstelle Versprechungen (Promises) verwendet, ist eine gute Möglichkeit, Berechtigungen anzufordern, die Verwendung von Promise.all
.
const sensor = new RelativeOrientationSensor();
Promise.all([
navigator.permissions.query({ name: "accelerometer" }),
navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
if (results.every((result) => result.state === "granted")) {
sensor.start();
// ...
} else {
console.log("No permissions to use RelativeOrientationSensor.");
}
});
Spezifikationen
Specification |
---|
Orientation Sensor # relativeorientationsensor-interface |
Browser-Kompatibilität
BCD tables only load in the browser