DOM

インターフェイス

OrientationSensor インターフェイス

  編集:2022.04.07 by T.A.

MS(en-US)

Sensor API の OrientationSensor インターフェースは、方向センサーの基本クラスです。このインターフェースを直接使用することはできません。代わりに、それを継承するインターフェースによってアクセスされるプロパティとメソッドを提供します。

機能ポリシーが機能の使用をブロックしている場合は、コードがサーバーに設定されているポリシーと矛盾していることが原因です。これは、ユーザーに表示されるものではありません。Feature-Policy HTTPヘッダーの記事には、実装手順が含まれています。

OrientationSensor に基づくインターフェース

以下は、OrientationSensorインターフェースに基づくインターフェースのリストです。

プロパティ
OrientationSensor.quaternion
デバイスの方向を表すユニット クォータニオンのコンポーネントが要素に含まれている 4 要素の配列を返します。
メソッド
OrientationSensor.populateMatrix()
指定されたオブジェクトに、最新のセンサー読み取り値に基づく回転行列を入力します。回転行列を以下に示します。
基本例
次の例は、IntelのOrientationPhone デモに大まかに基づいていて、1 秒間に 60 回の頻度で AbsoluteOrientationSensor をインスタンス化します。読み取りのたびに、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();
権限の例
向きセンサーを使用するには、複数のデバイス センサーの権限をリクエストする必要があります。パーミッション インターフェイスは promise を使用するため、権限をリクエストする良い方法は、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.");
         }
   });

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: