ДатчикОтносительнойОриентации
Ограниченная доступность
Эта функция не является базовой, поскольку она не работает во всех широко используемых браузерах.
Защищённый контекст: Данная функция доступна только в защищённых контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Интерфейс RelativeOrientationSensor из API датчиков описывает физическую ориентацию устройства без учёта координатной системы Земли.
Для использования этого датчика пользователь должен предоставить разрешение на доступ к 'accelerometer', и 'gyroscope' датчикам устройства через API разрешений. Кроме того, эта функция может быть заблокирована политикой разрешений Permissions Policy, заданной на вашем сервере.
Конструктор
RelativeOrientationSensor()-
Создаёт новый объект
RelativeOrientationSensor.
Свойства экземпляра
Нет специфических свойств; наследует свойства от своих предков OrientationSensor и Sensor.
Методы экземпляра
Нет специфических методов; наследует методы от своих предков OrientationSensor и Sensor.
События
Нет специфических событий; наследует события от своего предка Sensor.
Примеры
Базовый пример
Следующий пример, основанный на демонстрации ориентации телефона Intel, создаёт экземпляр RelativeOrientationSensor с частотой 60 раз в секунду.
Примечание: Демонстрация Intel, на которой основан этот пример, использует AbsoluteOrientationSensor. В каждом считывании она использует OrientationSensor.quaternion для поворота визуальной модели телефона.
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();
Пример с разрешениями
Для использования датчиков ориентации требуется запросить разрешения на доступ к нескольким датчикам устройства. Так как интерфейс Permissions использует промисы, удобным способом запроса разрешений является использование 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.");
}
});
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
RelativeOrientationSensor |
67 | 79 | Нет | 54 | Нет | 67 | Нет | 48 | Нет | 9.0 | 67 |
RelativeOrientationSensor |
67 | 79 | Нет | 54 | Нет | 67 | Нет | 48 | Нет | 9.0 | 67 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RelativeOrientationSensor