2017-05-15 7 views
0

화면을 잠근 경우에도 사용자가 실제로 화면을 세로 모드 또는 가로 모드로 유지하고 있는지 여부를 알고 싶습니다.JavaScript로 휴대 전화의 실제 방향보기

회전이 잠겨 있어도 실행되지 않으므로 orientationchange 이벤트를 사용할 수 없습니다. 뷰포트의 논리적 인 방향이 아닌 실제 실제 회전 장치를 따라 가고 싶습니다.

우리는 일반적으로 사용자에게 표시 방향을 강요해서는 안되며 방향을 고정 할 때 사용자의 기본 설정을 존중해야한다는 것을 알고 있습니다. 그러나 실제로는 을 수행해야합니다.에는 이유가 있습니다.

어떤 방법이 있습니까?

답변

0

예 - 휴대 전화를 똑바로 세우고있는 경우. 그런 다음 우리는 휴대 전화의 X에 중력의 당김을 읽을 DeviceMotionEvents을 사용할 수 있으며 Y 축의 : 전화가 평면 유지 또는 테이블에 누워하면 분명히

function watchOrientation(subscriber) { 
    if (window.DeviceMotionEvent) { 
     window.addEventListener('devicemotion', eventData => { 
      const hg = eventData.accelerationIncludingGravity.x; 
      const vg = eventData.accelerationIncludingGravity.y; 

      if (vg > 5) { 
       subscriber('up'); 
      } else if (vg <= -5) { 
       subscriber('down'); 
      } else if (hg > 0) { 
       subscriber('left'); 
      } else if (hg <= 0) { 
       subscriber('right'); 
      } 

     }, true); 
    } else { 
     console.warn('Device does not support "devicemotion" events'); 
    } 
} 

이 작동하지 않습니다. 이 경우 유일한 기회는 DeviceOrientationEvent의 나침반 데이터를 사용하는 것입니다 (단, 사용자가 북쪽을 마주 치는지 여부를 이미 알고있는 경우에만 해당).