因此,Android JAVA SDK具有进行传感器融合的规定。 它可以结合陀螺仪和加速度计读数来生成可靠的重力矢量。 这在API中公开,传感器类型为TYPE_GRAVITY。
现在,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 :(得分: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集