0

你好,我想问一下哪个传感器最能找到你当前的方向?方向传感器或计(罗盘)的组合。我看过很多增强现实版本,我想知道哪一个是最好的!其中一些使用来找到方位角,而其他使用加速度计和磁力计。据我所知,方向传感器已被弃用。

4

2 回答 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 回答