4

Android 文档中,将第三个参数指定为

float[] gravity 

然后是指定

[0 0 g] = R * gravity (g = magnitude of gravity)

现在,在大多数在线示例中,我可以看到每个人都将加速度计值发送到 getRotationMatrix,但是,不是假设我应该只发送重力值吗?

例如,如果手机有重力传感器,我应该将其原始输出发送到 getRotationMatrix 吗?如果没有,我应该发送加速度计值吗?我应该先提取非重力分量吗?(因为加速度计值是加速度减去 G)。

使用重力传感器值会比在具有该传感器的手机中使用加速度计值更可靠吗?

提前致谢!吉列尔莫。

4

1 回答 1

1

我认为您只看到使用加速度计值的示例的原因是因为重力传感器仅在 API 9 中启动,还因为大多数手机可能不会将此值与加速度计值分开,或者没有传感器等。

另一个原因是因为在大多数情况下,结果往往是相同的,因为加速度计传感器输出的是设备的线性加速度加上重力,但大多数时候手机会静止不动,甚至以恒定速度移动,因此设备加速度将为零。

来自setRotationMatrixAndroid 文档:

此函数返回的矩阵仅在设备不是自由落体且不靠近磁北时才有意义。如果设备正在加速或置于强磁场中,则返回的矩阵可能不准确。

现在,你问我重力数据是否更可靠?好吧,没有什么比测试更好的了,但我想它不会有太大的不同,它真的取决于你想要的应用程序。此外,获得简单的重力值并非易事,它需要过滤,因此您最终可能会得到嘈杂的结果。

于 2012-02-02T15:18:15.063 回答