android中的SensorManager.getRotationMatrix重力参数或加速度计参数值?

时间:2012-02-02 12:10:20

标签: android sensor android-sensors tilt-sensor

Android Documentation中将第三个参数指定为

float[] gravity 

然后指定

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

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

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

重力传感器值的使用是否比使用具有该传感器的移动电话中的加速度计值更可靠?

提前致谢!吉列尔莫。

1 个答案:

答案 0 :(得分:1)

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

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

来自setRotationMatrix Android文档:

  

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

现在,您问重力数据是否更可靠?好吧,没有什么比测试更好,但我认为它没有太大的区别,它实际上取决于你想要的应用程序。此外,获得简单的重力值并非易事,而且需要过滤,因此最终会产生噪音。