Javascript 为什么DeviceMotionEvent';iOS和Android的加速度有什么不同?
我有一个页面可以查看运动事件。出于某种原因,iOS设备和Android设备(特别是Galaxy S4)上返回的值是不同的——本质上是相反的 例如,如果iPhone 5s上的加速度包括重力.y是50,Galaxy S4上的加速度将是-50。我创建了一个示例来演示这个问题 我的问题是:Javascript 为什么DeviceMotionEvent';iOS和Android的加速度有什么不同?,javascript,html,motionevent,Javascript,Html,Motionevent,我有一个页面可以查看运动事件。出于某种原因,iOS设备和Android设备(特别是Galaxy S4)上返回的值是不同的——本质上是相反的 例如,如果iPhone 5s上的加速度包括重力.y是50,Galaxy S4上的加速度将是-50。我创建了一个示例来演示这个问题 我的问题是: 我错过了一些简单的东西吗 哪个设备是正确的 这与每个供应商如何对齐方向轴有关。这个“问题”已经持续了很长一段时间。大多数人最终要做的是将加速代码包装到一个具有设备检测的类中。将其转换为更统一的格式,然后在应用程序中使
这与每个供应商如何对齐方向轴有关。这个“问题”已经持续了很长一段时间。大多数人最终要做的是将加速代码包装到一个具有设备检测的类中。将其转换为更统一的格式,然后在应用程序中使用该格式 这是一种非常简单但实用的方法。正如上面所报道的,Chrome Android和Safari iOS的实现之间存在差异 目前,Android以与规范相同的方式定位重力,使用平板设备报告
accelerationIncludingGravity: {x: 0, y: 0, z:9.81}
然而,在iOS上,重力是相反的,这表明
accelerationIncludingGravity: {x: 0, y: 0, z: -9.81}.
应执行设备检查以解决此问题。我与您有相同的问题,如果您知道答案,请尽快告诉我,谢谢。已经添加了一项奖励。鉴于这是在供应商级别,是否可以安全地假设所有机器人,无论浏览器(chrome、firefox、native)如何,都将具有相同的加速方向,因为这是在硬操作系统级别,而不是在浏览器级别?根据我的经验,我可以说是的,对于所有主要硬件供应商来说,它都是独立于浏览器的。