您好我想问哪个传感器最适合找到您当前的方向?方向传感器或accelerometer和magnometer(罗盘)的组合。我见过很多增强现实版本,我想知道哪一个是最好的!其中一些使用orientation来找到方位角,而其他使用加速度计和万用表。据我所知,方向传感器已被弃用。
答案 0 :(得分:2)
我发现如果你需要免费的MIXARE框架,那真是太棒了
答案 1 :(得分: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]));
但在某些设备中,此传感器可能无法使用。在这种情况下,您可以使用Accelerometer和Magnetometer的组合。
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;
}
陀螺仪提供了两种选择中最好的结果。