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方法。 –