Spec-Zone.ru › Web APIs

Датчик ориентации

Ограниченная доступность

Эта функция не является базовой, так как она не работает во всех широко используемых браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Интерфейс OrientationSensor из API датчиков является базовым классом для датчиков ориентации. Этот интерфейс нельзя использовать напрямую. Вместо этого он предоставляет свойства и методы, к которым обращаются интерфейсы, наследующие от него.

Эта функция может быть заблокирована политикой Разрешений, установленной на вашем сервере.

EventTarget Sensor OrientationSensor

Интерфейсы, основанные на OrientationSensor

Ниже приведен список интерфейсов, основанных на интерфейсе OrientationSensor.

  • AbsoluteOrientationSensor
  • RelativeOrientationSensor

Свойства экземпляра

OrientationSensor.quaternion Только для чтения

Возвращает массив Array из четырёх элементов, содержащих компоненты единичного кватерниона, представляющего ориентацию устройства.

Методы экземпляра

OrientationSensor.populateMatrix()

Заполняет заданный объект матрицей вращения на основе последнего считывания датчика.

Примеры

Базовый пример

Следующий пример, частично основанный на демонстрации Intel Orientation Phone, создаёт AbsoluteOrientationSensor с частотой 60 раз в секунду. При каждом считывании он использует OrientationSensor.quaternion для вращения визуальной модели телефона.

const options = { frequency: 60, referenceFrame: "device" };
const sensor = new AbsoluteOrientationSensor(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 AbsoluteOrientationSensor();
Promise.all([
  navigator.permissions.query({ name: "accelerometer" }),
  navigator.permissions.query({ name: "magnetometer" }),
  navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
  if (results.every((result) => result.state === "granted")) {
    sensor.start();
    // …
  } else {
    console.log("No permissions to use AbsoluteOrientationSensor.");
  }
});

Спецификации

Спецификация
Датчик ориентации
# orientationsensor-interface

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
OrientationSensor 67 79 Нет 54 Нет 67 Нет 48 Нет 9.0 67
populateMatrix 67 79 Нет 54 Нет 67 Нет 48 Нет 9.0 67
quaternion 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/OrientationSensor

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API