AbsoluteOrientationSensor - 描述了设备相对于地球参考坐标系的物理方向
AbsoluteOrientationSensor
是 Sensor API 的接口,描述了设备相对于地球参考坐标系的物理方向。
要使用此传感器,用户必须通过 Permissions
API 授予 'accelerometer'
,'gyroscope'
和 'magnetometer'
设备传感器权限。
如果功能策略阻止使用功能,则原因是您的代码与服务器上设置的策略不一致。它不会向用户显示出来。有关实施说明,请参阅 Feature-Policy
。
构造函数
AbsoluteOrientationSensor.AbsoluteOrientationSensor()
创建一个新的 AbsoluteOrientationSensor
对象。
属性
没有特有的属性;从其祖先接口 OrientationSensor
和 Sensor
继承了属性。
事件处理程序
没有特有的事件处理程序;从其祖先接口 Sensor
继承了方法。
方法
没有特有的方法;从其祖先接口 OrientationSensor
和 Sensor
继承了方法。
实例
以下实例大致基于 Intel 的 Orientation Phone 演示,以每秒 60 次的频率实例化了一个 AbsoluteOrientationSensor
。每次读取时,它都会使用 OrientationSensor.quaternion
来旋转手机的视觉模型。
const options = { frequency: 60, referenceFrame: 'device' };
const sensor = new AbsoluteOrientationSensor(options);
sensor.addEventListener('reading', () => {
// 模型是在其他地方实例化的 Three.js 对象。
model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener('error', error => {
if (event.error.name == 'NotReadableError') {
console.log("传感器不可用。");
}
});
sensor.start();
权限实例
使用方向传感器需要多个设备传感器的权限。因为 Permissions
使用了 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("没有使用 AbsoluteOrientationSensor 的权限。");
}
});
规范
规范 | 状态 | 备注 |
---|---|---|
Generic Sensor API | 候选推荐 | 定义了通用传感器。 |
Orientation Sensor AbsoluteOrientationSensor 的定义 |
候选推荐 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 69 | ≤79 | 未知 | 未知 | 56 | 未知 |
AbsoluteOrientationSensor() 构造函数 | 69 | ≤79 | 未知 | 未知 | 56 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 69 | 69 | 未知 | 未知 | 未知 | 48 | 未知 |
AbsoluteOrientationSensor() 构造函数 | 69 | 69 | 未知 | 未知 | 未知 | 48 | 未知 |