使用旋转矢量时Android传感器管理器出现问题

时间:2020-11-08 11:57:05

标签: android android-sensors

我正在尝试通过听TYPE_ROTATION_VECTOR来使用Android传感器管理器,但遇到了一些问题。

总体来说,一切正常,但是当我将手机正面朝北(方位角180或360)时,它看起来像用于测量手机音高的传感器停止工作(Samsung GALAXY S10 Android 10 )。

我意识到,很奇怪的是,当电话面向北时,负责测量roll的传感器现在会改变pitch

我水平使用手机。

private final float quaternion = new float[4];
private final float rotationMatrix = new float[9];
private final float orientationAngles = new float[3];

@Override
public void init(SensorManager sensorManager){
   this.sensorManager = sensorManager;
   sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), sensorManager.SENSOR_DELAY_GAME);
}

@Override
public void onSensorChange(SensorEvent event){
   SensorManager.getQuaternionFromVector(quaternion, event.Values);
   SensorManager.getRotationMatrixFromVector(rotationMatrix, quaternion);
   SensorManager.getOrientation(rotationMatrix, orientationAngles);
   
   float azimuth = ((float) Math.toDegrees(orientationAngles[0]) + 180) % 360;
   float pitch = (float) Math.toDegrees(orientationAngles[1])
   ...
}

有什么主意吗? :)

0 个答案:

没有答案
相关问题