我在JavaScript中使用deviceorientation,我注意到我的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縱向放在你的面前。 校準兩者的值(第一個按鈕)。 然後拿起平板電腦的右角並旋轉它直到平板電腦達到90度。 平板電腦應位於左側。
在Android上,gamma從0變爲-80,然後跳轉到270. 在IOS上,gamma從0跳到-180,沒有任何跳躍。
我已經盡力校準值,我關心的風景肖像。我更新了我的文章,也許它更清晰。 – Charles
@charles - 忘記alpha,beta,gamma,只需使用簡單的//// var orientation = window.innerWidth> window.innerHeight? 「橫向縱向」; //// –
我想知道用戶何時翻轉/傾斜/搖動手機,所以我需要alpha,beta,gamma。隨着「我關心風景畫」,我想說我已經知道風景/肖像影響alpha,beta,gamma。 – Charles