用于加速度计转换的Android旋转矩阵

时间:2016-02-28 00:48:35

标签: android accelerometer android-sensors coordinate-systems coordinate-transformation

如果我想将我的加速度值从电话坐标系转换为世界坐标系,我应该从传感器管理器使用哪个旋转矩阵?此外,如果我通过下面的每一个来加倍我的加​​速度计值,我实际得到的结果是什么呢?

开发文档中列出了不少内容:

  • TYPE_ROTATION_VECTOR
  • TYPE_GAME_ROTATION_VECTOR
  • TYPE_GEOMAGNETIC_ROTATION_VECTOR
  • TYPE_ORIENTATION
  • 似乎API提供了getRotationMatrix方法,但我不确定这是上述的组合,还是完全不同的方法

我已经看到了一些线程(例如Acceleration from device's coordinate system into absolute coordinate system),但它们已经相当陈旧了,我不确定是否有任何新的/更有用的东西已添加到Android中

1 个答案:

答案 0 :(得分:1)

你需要得到Rotation Matrix,然后这个矩阵的乘积和onSensorChanged中的加速度计值将为你提供世界坐标系中的坐标。

您可以在https://github.com/hoananguyen/dsensor下载我的库,并在您的代码中调用DSensorManager.startDSensor(context,DSensor.TYPE_WORLD_ACCELEROMETER,listener)。确保在不再需要传感器时调用DSensorManager.stopDSensor。