1

因此,Android JAVA SDK 提供了进行传感器融合的规定。它可以结合陀螺仪和加速度计读数来生成可靠的重力矢量。这在 API 中以传感器类型TYPE_GRAVITY 公开

现在,NDK 也支持传感器,例如,这里有一个示例 NDK 应用程序,它以 60Hz 读取加速度计:NativeActivity 示例源

但是,从sensor.h 源代码来看,NDK 只允许我生成以下传感器类型:

  • 加速度计
  • 磁场
  • 陀螺仪
  • 接近

所以示例代码使用了 ASENSOR_TYPE_ACCELEROMETER。可悲的是,没有 ASENSOR_TYPE_GRAVITY。这仅仅是 NDK 只做 SDK API 的准系统子集的一个例子吗?

如何在 Android NDK 上进行传感器融合?我想避免从 Java 中引入值,因为在 Java 中进行高频读取时,我已经阅读了有关 CPU 使用过多的警告。

谢谢你。

4

1 回答 1

0

不确定你是否还在寻找这个,但我最近遇到了同样的问题,只是想我会分享我是如何解决这个问题的。

ASENSOR_TYPE_* 被定义为 int,因此将 ASENSOR_TYPE_ACCELEORMETER 替换为 1 仍然可以让您访问加速度计传感器以使用其他传感器 看看

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

并找到您要使用的传感器的 int 值,并使用它代替 ASENSOR_TYPE_ACCELEROMETER。例如,要使用 GYROSCOPE,您可以使用 4。

或者您也可以使用 #define 定义自己的 int 集

于 2014-11-16T16:05:47.207 回答