【发布时间】:2013-09-26 21:38:55
【问题描述】:
我使用以下(假设是相当标准的)代码来检索平板设备的方向以用于增强现实目的(因此后置摄像头应该指向一个有效的方向)。
private Sensor mAccelerometer;
private Sensor mMagnetometer;
private float[] mLastAccelerometer = new float[3];
private boolean mLastAccelerometerSet = false;
private float[] mLastMagnetometer = new float[3];
private boolean mLastMagnetometerSet = false;
private Sensor mAccelerometer;
private Sensor mMagnetometer;
private float[] mLastAccelerometer = new float[3];
private boolean mLastAccelerometerSet = false;
private float[] mLastMagnetometer = new float[3];
private boolean mLastMagnetometerSet = false;
private float[] inR = new float[9];
private float[] mR = new float[9];
private float[] mOrientation = new float[3];
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
...
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
...
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_FASTEST);
...
public void onSensorChanged(SensorEvent event) {
synchronized (this) {
if (event.sensor == mAccelerometer) {
System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length);
mLastAccelerometerSet = true;
} else if (event.sensor == mMagnetometer) {
System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length);
mLastMagnetometerSet = true;
}
if (mLastAccelerometerSet && mLastMagnetometerSet && scene.camera() != null && mPlane1 != null) {
SensorManager.getRotationMatrix(inR, null, mLastAccelerometer, mLastMagnetometer);
SensorManager.remapCoordinateSystem(inR, SensorManager.AXIS_X, SensorManager.AXIS_Z, mR);
SensorManager.getOrientation(mR, mOrientation);
/* my code that handles mOrientation */
}
}
}
问题是这段代码在 Samsung Galaxy Tab 10.1(P7500,第一个版本)上完美运行。在 Asus Transformer Pad Infinity (TF700) 上运行相同的代码,当围绕我自己旋转平板电脑时,第一个值 mOrientation[0] 仅在 +2.0 和 +3.0 之间变化(我希望它会介于 0 和 3.14 之间)。
设备有问题还是我忽略了其他变量?
【问题讨论】:
标签: android augmented-reality android-sensors