如何解决移动设备上的绝对设备方向
我试图在不同的移动设备(Android + IO)和浏览器上获得绝对的设备方向
以或多或少可靠的方式。我宁愿能够理解我所接受的方向是否是相对的,而不是显示指南针而不是显示错误的值。
我已经来回搜寻了好几天,但还没有找到确切的答案(我是
javascript和网络开发新手)。
我看到Full-Tilt库应该做的很好
但它具有非商业许可证。我打算将此结果用于潜在的商业项目,此外,我想了解发生了什么。
如今,大多数设备定向事件都返回相对值。
deviceorientationabsolute不被firefox支持,这是一项实验性功能,当其他事情失败时,我可以回退它,但它不能成为主要解决方案。
到目前为止,我已经了解了这一行推理(伪代码):
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",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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。