2012-11-30 95 views
0

你好,我想问哪个传感器是最好找到你当前的方向?方位传感器或者(指南针)的组合。我见过很多增强现实版本,我想知道哪一个最好!其中一些使用找到方位角,而其他的使用加速度计和放大镜。据我所知,方向传感器已被弃用。增强现实的方向

回答

2

我发现,如果你需要的框架,它是免费的MIXARE真的很棒

+0

感谢您的快速回答,但我需要从头开始制作我的应用程序,mixare有点复杂,无法理解它使用方向的方式! – userX

+0

我在mixare中改变了一些东西,让它按我的意愿工作。所有的类都有你需要做的就是挖掘:)基本上,它检测可用的传感器,并使用可用的,因为它适用于旧的移动设备以及新的移动设备 – vodich

+0

我已经使用mixare框架,它实际上是一个很好的框架。我也可以对其进行更改,但是我想为我的论文创建一个ar应用程序,而不是使用已经创建的应用程序! – userX

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

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