2014-07-16 53 views
1

所以,Android JAVA SDK有條件做傳感器融合。 它可以結合陀螺儀和加速計讀數生成可靠的重力矢量。 這暴露在傳感器類型爲TYPE_GRAVITY的API中。在Android NDK中做傳感器融合

現在,NDK具有傳感器的支持,以及,例如,這裏有一個例子NDK應用程序,讀取在60Hz加速度計:NativeActivity sample source

不過,從sensor.h sourcecode來看,NDK只讓我產生以下傳感器類型:

  • 加速度
  • 磁場
  • 陀螺
  • 接近

所以示例代碼使用ASENSOR_TYPE_ACCELEROMETER。可悲的是,沒有ASENSOR_TYPE_GRAVITY。這僅僅是一個NDK只做SDK API的準系統子集的情況嗎?

如何在Android NDK上進行傳感器融合?我想避免從Java中引入值,因爲在Java中進行高頻讀取時,我已經閱讀了有關繁重的CPU使用情況的警告。

謝謝。

回答

0

不知道你是否仍在尋找這個,但我最近有同樣的問題,只是認爲我會分享我如何解決這個問題。

ASENSOR_TYPE _ *的被定義爲int所以用1替換ASENSOR_TYPE_ACCELEORMETER仍然給你訪問加速度傳感器使用其他傳感器來看看

http://developer.android.com/reference/android/hardware/Sensor.html

並找到的int值您想要使用的傳感器,並使用它來代替ASENSOR_TYPE_ACCELEROMETER。例如,要使用GYROSCOPE,您可以使用4.

或者您也可以使用#define定義您自己的一組int,使用#define