旋转矢量传感器的行为类似于游戏旋转矢量传感器

时间:2015-11-24 07:42:20

标签: android eclipse opencv android-sensors android-5.1.1-lollipop

我在Android 5.1.1上面临旋转矢量传感器的问题。 我的代码:

if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
     float[] inputSensorMat = new float[16];
     float[] outputSensorMat = new float[16];
    SensorManager.getRotationMatrixFromVector(inputSensorMat, event.values.clone());
    // since default orientation is landscape, we need to swap axis
    // (see documentation of remapCoordinateSystem)
    SensorManager.remapCoordinateSystem(inputSensorMat,
            SensorManager.AXIS_Y,
            SensorManager.AXIS_MINUS_X,
            outputSensorMat);
    Log.v(getClass(),     Constants.NEW_ORIENTATION(Arrays.toString(outputSensorMat)));
    mMatrix = new Matrix4x4(outputSensorMat, true);
}

然后在Rajawali中使用旋转矩阵来渲染场景。 我的问题是:
在Android 5.1.1上,旋转矢量似乎给出相对值,具体取决于初始方向/不采用geomag。考虑传感器 - 即当我启动应用程序时。朝东,它的模型由我的右手呈现。当我启动应用程序时。朝北,模型也由我的右手呈现,而不是在我身后。 我在NVidia Shield平板电脑(2台设备)上进行了测试,其中一台配备了氰基模式和Nexus 7。 Percieved行为符合Game Rotation Vector传感器的描述,但NVidia Shield没有实现。

但是,相同的代码在Android 4.1.2和4.4上有相应的行为。

知道为什么会发生这种情况或如何解决它?

编辑: 可能是我使用的是android:targetSdkVersion =" 19"?在Eclipse中的项目构建目标中设置了相同的值(我使用的是代替Android Studio)。由于我对OpenCV的依赖,我无法设置更高的API(请参阅this question

0 个答案:

没有答案