gpt4 book ai didi

javascript - 标准化设备方向数据

转载 作者:行者123 更新时间:2023-11-29 15:21:59 26 4
gpt4 key购买 nike

我正在玩 JavaScript 中的设备方向,我注意到我的 Ipad (iOS 6.1) 和我的 Nexus7 (Android 4.2.2) 之间存在一些差异。

此代码不会在 Ipad 和 Nexus7 上打印相同的数据。

<html>
<head/>
<body>
<button id="calibrate">Calibrate</button>
<button id="stop">Stop</button>
<button id="play">Play</button>
<div id="log"><p></p></div>
<script>
var log = document.getElementById('log');
var calibrate = false;
var calibrateG = 0, calibrateB = 0, calibrateA = 0;

var deviceorientation = function(e) {
if (calibrate) {
calibrateG = e.gamma;
calibrateB = e.beta;
calibrateA = e.alpha;
calibrate = false;
}

var gamma = parseInt(e.gamma - calibrateG);
var beta = parseInt(e.beta - calibrateB);
var alpha = parseInt(e.alpha - calibrateA);

var p = document.createElement('p');
p.innerHTML = gamma + ' ' + beta + ' ' + alpha;
log.insertBefore(p, log.firstChild);
}

document.getElementById('stop').onclick = function() {
window.removeEventListener('deviceorientation', deviceorientation);
};
document.getElementById('play').onclick = function() {
window.addEventListener('deviceorientation', deviceorientation);
};
document.getElementById('calibrate').onclick = function() {
calibrate = true;
};

window.addEventListener('deviceorientation', deviceorientation);

</script>
</body>
</html>

开始时 Android 打印 0 0 270 和 iOS 0 0 0。

然后当我以相同的方式移动两者时,它们不会打印相同的值。

谁能解释原因,以及是否有办法规范化数据。

更新 #1

我已经尝试了一些校准并且我关心横向/纵向。要重现,可以拿上面的代码,把ipad和nexus7纵向放在你面前。校准两者的值(第一个按钮)。然后拿起数位板的右 Angular 并旋转它直到数位板达到 90 度。平板电脑应位于左侧。

在 Android 上,gamma 从 0 到 -80,然后跳到 270。在 IOS 上,gamma 从 0 到 -180 没有任何跳跃。

最佳答案

Full Tilt JS标准化 Android 和 iOS 设备方向实现之间的数据值。它还确保设备方向数据在用户旋转屏幕时保持一致。

This article总结了 Full Tilt JS 库中使用的一些技术。

免责声明:我是上述文章和图书馆的作者。请试一试并直接在 Github 项目上报告任何问题。

关于javascript - 标准化设备方向数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com