1

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

有相当多的开发文档中列出:

  • TYPE_ROTATION_VECTOR
  • TYPE_GAME_ROTATION_VECTOR
  • TYPE_GEOMAGNETIC_ROTATION_VECTOR
  • TYPE_ORIENTATION
  • 看起来也似乎是一个getRotationMatrix方法通过API提供的,但我不确定这是否是上述的组合,或者完全不同的东西

我已经看到了这方面的一些线程(例如, Acceleration from device's coordinate system into absolute coordinate system),但他们是相当老,我不知道,如果新的/更多有用的已添加任何东西到Android,因为

回答

1

你需要得到Rotation Matrix然后这个矩阵的产品和onSensorChanged加速度值将给你世界坐标系中的坐标。

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

+0

在你的代码中,你能指出我在哪里获得旋转矩阵并进行乘法运算吗?我想知道如何在不依赖其他库的情况下自己实现这个功能 – Simon

+0

另外,旋转矩阵与上面列出的其他矩阵有什么不同? – Simon

+1

上面列出的类型为您提供了一个不是矩阵的向量。您可以从SensorManager类中的几个方法获取旋转矩阵。在我的代码中查看类DSensorProcessor中的processDataWithRotationMatrix方法。 –