簡體   English   中英

移動設備上的絕對設備方向

[英]absolute device orientation on mobile devices

我試圖以或多或少可靠的方式跨不同的移動設備(android + IOs)和瀏覽器獲得絕對設備方向。 我寧願能夠理解我收到的方向是否是相對的,而不是顯示指南針而不是顯示錯誤的值。
我已經來回搜索了好幾天,但還沒有找到明確的答案(我是 javascript 和 web 開發新手)。
我看到Full-Tilt庫應該正是這樣做的,但它具有非商業許可證。 我打算將此結果用於潛在的商業項目,此外,我想了解正在發生的事情。

如今,大多數設備定向事件都返回相對值。
firefox不支持 deviceorientationabsolute 並且它是一個實驗性功能,當其他事情失敗時我可以使用它,但它不是主要的解決方案。

到目前為止,我已經進行了這一推理(偽代碼):

if(mobile)
  if(webkitmobilecompassheading)
    window.addEventListener("deviceorientation", handleOrientationWebkit, true);
  else if(deviceorientationabsolute)
    window.addEventListener("deviceorientation", handleOrientationAbsolute, true);
  else
    "bad luck"   

我不知道在哪里可以了解以下推理我會錯過多少設備,以及是否有更好的方法。

對於 Android 它是自動工作的,對於 iOS 需要單擊它來啟動它。 這是您可以使用的代碼的一部分

startBtn.addEventListener("click", startCompass);

function startCompass() {
  if (isIOS) {
    DeviceOrientationEvent.requestPermission()
      .then((response) => {
        if (response === "granted") {
          window.addEventListener("deviceorientation", handler, true);
        } else {
          alert("has to be allowed!");
        }
      })
      .catch(() => alert("not supported"));
  } else {
    window.addEventListener("deviceorientationabsolute", handler, true);
  }
}

function handler(e) {
  const degree = e.webkitCompassHeading || Math.abs(e.alpha - 360);
}

完整教程在這里,也可以嘗試演示https://dev.to/orkhanjafarovr/real-compass-on-mobile-browsers-with-javascript-3emi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM