[英]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.