자바 스크립트로 기기 방향을 사용하고 있는데 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>
시작 안드로이드 인쇄시 0 0 270 0 0
아이폰 OS 0 그런 다음, 그들은 같은 값을 인쇄되지 않습니다.
누군가가 이유를 설명하고 데이터를 표준화하는 방법이 있는지 알 수 있습니까?
업데이트 # 1
은 이미 일부 교정을 시도하고 나는 가로/세로 걱정. 코드를 재현하려면 ipad와 nexus7을 앞에 세로로 넣어주세요. 둘 다의 값을 보정하십시오 (첫 번째 버튼). 그런 다음 태블릿의 오른쪽 모서리를 잡고 태블릿이 90도에 도달 할 때까지 회전하십시오. 태블릿은 왼쪽에 있어야합니다.
Android에서는 감마가 0에서 -80으로 이동 한 다음 270으로 점프합니다. IOS에서는 감마가 0에서 -180으로 점프하지 않습니다.
나는 이미 값을 보정하려고하는데 가로 세로에 관심이 있습니다. 내 게시물을 업데이트했을 수도 있습니다. – Charles
@charles - 알파, 베타, 감마를 잊어 버리고 ////와 같은 간단한 것을 사용하십시오. var orientation = window.innerWidth> window.innerHeight? "풍경": "초상화"; //// –
사용자가 전화를 뒤집기/뒤집기/흔들기를 알고 싶습니다. 따라서 알파, 베타, 감마가 필요합니다. "나는 풍경 사진에 관심이 있습니다"라고 말하면서 풍경/초상화가 알파, 베타, 감마에 영향을 준다는 것을 이미 알고 있다고 말하고 싶었습니다. – Charles