AbsoluteOrientationSensor

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Giao diện AbsoluteOrientationSensor của Sensor APIs mô tả hướng vật lý của thiết bị so với hệ tọa độ tham chiếu của Trái Đất.

Để dùng cảm biến này, người dùng phải cấp quyền cho các cảm biến thiết bị 'accelerometer', 'gyroscope''magnetometer' thông qua Permissions API.

Tính năng này có thể bị chặn bởi một Permissions Policy được đặt trên máy chủ của bạn.

EventTarget Sensor OrientationSensor AbsoluteOrientationSensor

Bộ khởi tạo

AbsoluteOrientationSensor()

Tạo một đối tượng AbsoluteOrientationSensor mới.

Thuộc tính thể hiện

Không có thuộc tính cụ thể nào; kế thừa các thuộc tính từ các lớp cha OrientationSensorSensor.

Phương thức thể hiện

Không có phương thức cụ thể nào; kế thừa các phương thức từ các lớp cha OrientationSensorSensor.

Sự kiện

Không có sự kiện cụ thể nào; kế thừa các phương thức từ lớp cha Sensor.

Ví dụ

Ví dụ cơ bản

Ví dụ sau, được xây dựng khá gần với Orientation Phone demo của Intel, khởi tạo một AbsoluteOrientationSensor với tần suất 60 lần mỗi giây. Ở mỗi lần đọc, ví dụ dùng OrientationSensor.quaternion để xoay một mô hình điện thoại trực quan.

js
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", (event) => {
  if (event.error.name === "NotReadableError") {
    console.log("Sensor is not available.");
  }
});
sensor.start();

Ví dụ về quyền truy cập

Sử dụng cảm biến định hướng đòi hỏi yêu cầu quyền cho nhiều cảm biến thiết bị. Vì giao diện Permissions sử dụng promise, một cách tốt để yêu cầu quyền là dùng Promise.all.

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

Thông số kỹ thuật

Thông số kỹ thuật
Orientation Sensor
# absoluteorientationsensor-interface

Tương thích trình duyệt