我目前在读出Android旋转向量的值时遇到了一些问题。正如Android文档解释的那样,旋转矢量是陀螺仪,磁力计和加速度计的传感器融合组合。旋转矢量的参考框架是X朝东,Y朝北,Z垂直,当设备处于平坦位置时。Android传感器管理器旋转向量(TYPE_ROTATION_VECTOR)不可靠/缓慢
所有提到的特征是正确的,并在我的应用程序中工作。
现在的问题:旋转矢量似乎部分非常不准确。首先,旋转矢量的值似乎滞后于实际运动,其次这些值真的受到设备快速移动的影响。
为了排除我的实现所产生的任何错误,我们还测试了谷歌的演示应用程序。源代码位于here。同样在这个演示中,旋转矢量在快速运动中看起来部分是滞后和不可靠的。
有没有其他人面临Android的旋转矢量的一些问题?
这里是I'm怎么做: 注册的传感器和听众:
sensorManager.registerListener(this, gravitySensor, SensorManager.SENSOR_DELAY_FASTEST, handler)
读出的值,并创建用于OpenGL渲染一个旋转矩阵:
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(rotationMatrix4D, event.values);
}
}
编辑: 我正在开发三星Galaxy S3迷你。也许只是设备的传感器不太好。