javascript - 您如何在 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.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 中访问运动数据需要做什么?
谢谢
解决方案
显然,现在需要使用 https:// 服务和访问网站/webapp 才能使用运动传感器。我访问了上面没有使用 http:// 提供任何传感器数据的相同 URL,它确实使用 https:// 工作
推荐阅读
- sql - 基于另一列组合列
- python-3.x - 使用 employee_id 或电子邮件或电话号码登录 Django 管理员
- javascript - 如何使用 pdo 通过 ajax 在 php oops 中进行以下更新。下面的代码在控制台中显示没有错误,但它不起作用
- function - 如何使用 FOR 循环或 WHILE 循环将数据合并到单个数据框中?
- python - Raspberry pi 3 crontab 没有日志就无法工作
- http - https和http可以互相通信吗?
- wordpress - 如何为房地产网站添加 wordpress 自定义永久链接
- php - websocket 服务器找不到类 mysqli。如何在我自己的 websocket 服务器中使用 mysql 数据库连接?
- php - Roblox API(头像设备)
- python - 内联 Python 如何至少在 Perl 中将过滤器对象从 Python 转换为数组或迭代器