首页 > 解决方案 > 您如何在 2019 年/之后访问移动浏览器 web 应用程序中的运动传感器(加速度计、陀螺仪)?为什么它不再起作用?

问题描述

我有旨在测量移动设备上的设备运动的代码,它曾经在移动浏览器中工作,但现在不再适用。这是直接取自 Mozilla 网络文档的示例:

function handleMotionEvent(event) {

    var x = event.accelerationIncludingGravity.x;
    var y = event.accelerationIncludingGravity.y;
    var z = event.accelerationIncludingGravity.z;

    // Do something awesome.
}

window.addEventListener("devicemotion", handleMotionEvent, true);

据我所知,这样的代码不再适用于移动浏览器(大约 2019 年 8 月)。

为什么?需要做什么?

在花时间尝试调试我自己的代码后,我发现网络上提供的许多示例/演示/测试器也不再有效,例如:

http://www.gianpa.com/shake/

http://www.albertosarullo.com/demos/accelerometer/

这似乎与现代浏览器/权限/等的一些变化有关,可能与最近披露的与加速度计访问相关的安全问题,以及苹果和谷歌因此采取的步骤有关,例如:

https://www.macrumors.com/2019/02/04/ios-12-2-safari-motion-orientation-access-toggle/

我发现,无论是运行最新 Chrome 的最新 Android 手机,还是运行 Safari 的相对较新的 iOS 手机,似乎都不再允许 webapp 访问运动传感器。但是,当我在较旧的 Android 设备上加载相同的演示代码(例如,来自上述演示网站)时......它像以前一样工作正常。

在 webapp 中访问运动数据需要做什么?

谢谢

标签: javascriptandroidiosgoogle-chromemobile-safari

解决方案


显然,现在需要使用 https:// 服务和访问网站/webapp 才能使用运动传感器。我访问了上面没有使用 http:// 提供任何传感器数据的相同 URL,它确实使用 https:// 工作


推荐阅读