RelativeOrientationSensor

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

RelativeOrientationSensor 介面是 感測器 API 的一部分,它描述了裝置的物理方向,而不考慮地球的參考座標系。

要使用此感測器,使用者必須透過 Permissions API 授予對 'accelerometer''gyroscope' 裝置感測器的訪問許可權。此外,此功能可能會被伺服器設定的 Permissions Policy 阻止。

EventTarget Sensor OrientationSensor RelativeOrientationSensor

建構函式

RelativeOrientationSensor()

建立一個新的 RelativeOrientationSensor 物件。

例項屬性

沒有特定的屬性;繼承自其祖先 OrientationSensorSensor 的屬性。

例項方法

沒有特定的方法;繼承自其祖先 OrientationSensorSensor 的方法。

事件

沒有特定的事件;繼承自其祖先 Sensor 的事件。

示例

基本示例

以下示例(鬆散地基於 Intel 的 Orientation Phone 演示)以每秒 60 次的頻率例項化一個 RelativeOrientationSensor

注意: 此示例基於的 Intel 演示使用了 AbsoluteOrientationSensor。在每次讀取時,它使用 OrientationSensor.quaternion 來旋轉手機的視覺模型。

js
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,因此請求許可權的一種好方法是使用 Promise.all

js
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.");
  }
});

規範

規範
方向感測器
# relativeorientationsensor-interface

瀏覽器相容性