增强现实定位

时间:2012-11-30 14:12:29

标签: android augmented-reality

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

2 个答案:

答案 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;
}

陀螺仪提供了两种选择中最好的结果。