2019 年及之后如何在移动浏览器 Web 应用程序中访问运动传感器(加速计、陀螺仪)?为什么它不再起作用了?

use*_*237 4 javascript android google-chrome mobile-safari ios

我有一些代码旨在测量移动设备上的设备运动,它曾经可以在移动浏览器中运行,但现在不再可以了。以下是直接取自 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);
Run Code Online (Sandbox Code Playgroud)

据我所知,这样的代码不再适用于移动浏览器(大约 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 手机似乎都不再允许 Web 应用程序访问运动传感器。然而,当我在旧的 Android 设备上加载相同的演示代码(例如,来自上述演示网站)时......它像以前一样工作正常。

要在网络应用程序中访问运动数据需要做什么?

谢谢

use*_*237 8

显然,现在需要使用 https:// 来服务和访问网站/网络应用程序,以便能够使用运动传感器。我使用 http:// 访问了上面的相同 URL,但没有提供任何传感器数据,但使用 https:// 确实可以工作