你好,我想问一下哪个传感器最能找到你当前的方向?方向传感器或加速度计和磁强计(罗盘)的组合。我看过很多增强现实版本,我想知道哪一个是最好的!其中一些使用方向来找到方位角,而其他使用加速度计和磁力计。据我所知,方向传感器已被弃用。
问问题
517 次
2 回答
2
我发现如果你需要免费的框架,MIXARE真的很棒
于 2012-11-30T14:15:30.900 回答
2
您可以使用陀螺仪传感器来查找旋转矢量。它可以用来获取方位角。
SensorManager mSensorManager = (SensorManager)
getSystemService(Context.SENSOR_SERVICE);
rSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
在 onSensorChanged 函数中,
SensorManager.getRotationMatrixFromVector(mRotationMatrix, event.values);
SensorManager.getOrientation(mRotationMatrix, mValues);
azimuth = Math.toDegrees(mValues[0]));
但在某些设备中,此传感器可能不可用。在这种情况下,您可以使用加速度计和磁力计的组合。
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
aSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
在 onSensorChaged 函数中,
switch (event.sensor.getType()) {
case Sensor.TYPE_MAGNETIC_FIELD:
magnetic = event.values.clone();
break;
case Sensor.TYPE_ACCELEROMETER:
accelerometer = event.values.clone();
break;
}
if (magnetic != null && accelerometer != null) {
Rot = new float[9];
I = new float[9];
SensorManager.getRotationMatrix(Rot, I, accelerometer, magnetic);
float[] outR = new float[9];
SensorManager.remapCoordinateSystem(Rot, SensorManager.AXIS_X,
SensorManager.AXIS_Z, outR);
SensorManager.getOrientation(outR, values);
azimuth = values[0];
magnetic = null;
accelerometer = null;
}
陀螺仪提供了两个选项中的最佳结果。
于 2015-07-26T19:13:32.250 回答