Android z 轴上的加速度计读数为 0,没有变化

Android accelerometer reading 0 on z axys without change

我正在创建一个应用程序,它利用加速度计数据来计算设备的滚动和俯仰。 这就是我现在所拥有的,还没有对 roll/pitch 计算进行编码。

只需检查存在哪些传感器并将它们列在 logcat 中,检查设备是否有加速度计,并实现一个简单的输出 GUI(4 个文本视图,对应于 3 个轴和最大传感器范围)。

X 和 Y 正确读取 phone 静止并一次沿一个轴旋转,从 0 到 9.5 左右(这对应于地球重力对应的正常 9.8m/s2) .正如预期的那样,摇动设备会导致值超过 9.8 阈值。

然而,

Z 加速度 (sensorEvent.values[2]) 稳定在 0.032 左右(我们称之为零)。摇晃、旋转,除了将它扔到墙上之外的任何事情都不会产生任何变化……这使得我计算横滚和俯仰的任何尝试都变得毫无用处……

这段代码有什么问题吗,或者我是否应该假设这个特定的 phone 有问题(用我妻子的 phone 进行了测试,它是完全相同的模型:相同的结果)。

显然这是正常的,因为 Z 轴取决于磁方向。如果没有陀螺仪、磁力计或罗盘,z 值很可能始终为 0。或者至少保持不变。 由于我的这个 phone 有 none 个,这样就清楚了。