【问题标题】:absolute device orientation on mobile devices移动设备上的绝对设备方向
【发布时间】:2020-12-04 01:33:21
【问题描述】:

我正在尝试跨不同移动设备(android + IO)和浏览器获取绝对设备方向 以或多或少可靠的方式。我宁愿能够理解我收到的方向是否是相对的,而不是显示指南针而不是显示错误的值。
我已经来回搜索了几天,但我还没有找到明确的答案(我是 javascript 和 web 开发新手)。
我看到Full-Tilt 库应该完全正确 那个,但它有一个非商业许可证。我打算将此结果用于潜在的商业项目,此外,我想了解正在发生的事情。

现在大多数设备方向事件都返回相对值。
deviceorientationabsolute 不受 firefox 支持,它是一个实验性功能,当其他事情失败时我可以回退它,但它不是主要解决方案。

到目前为止,我已经了解了这一行推理(伪代码):

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

我不知道在哪里可以了解根据以下推理我会错过多少设备,以及是否有更好的方法。

【问题讨论】:

    标签: javascript android ios mobile


    【解决方案1】:

    对于 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

    【讨论】:

    • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 2020-06-27
    • 2018-09-20
    • 2014-03-17
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多