我正在嘗試爲nVidia屏蔽創建增強現實應用程序。 我在另一個Android設備上嘗試了我的應用程序,它工作。 不幸的是,在屏蔽上,onSensorChanged事件沒有被觸發。onSensorChanged()未在Android上觸發(nVidia Shield平板電腦)
這裏是我的代碼:
_sensorEventListener = new SensorEventListener()
{
public void onSensorChanged(SensorEvent event) {
AndroidAttitude.this.processSensorEvent(event);
}
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
};
Thread sensorThread = new Thread(new Runnable()
{
public void run() {
Looper.prepare();
_sensorLooper = Looper.myLooper();
Handler handler = new Handler();
_sensorManager = (SensorManager)_context.getSystemService("sensor");
Sensor sensor = _sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
_sensorManager.registerListener(_sensorEventListener, sensor, 0, _sensorManager.SENSOR_DELAY_GAME);
Looper.loop();
}
});
sensorThread.start();
而這正是我改變我值轉換爲旋轉矩陣:
private synchronized void processSensorEvent(SensorEvent event)
{
float[] rotationVector = { -event.values[1], event.values[0], event.values[2] };
float[] quaternion = new float[4];
float[] rotationMatrix = new float[16];
_sensorManager.getQuaternionFromVector(quaternion, rotationVector);
_sensorManager.getRotationMatrixFromVector(rotationMatrix, rotationVector);
}
任何想法,爲什麼它不會工作?
謝謝,但我想要做的是獲得旋轉矩陣,所以使用TYPE_ROTATION_VECTOR允許我直接獲取值(我已更新我的帖子) –
我已更新我的答案 – Jorgesys
不幸的是,更改爲SENSOR_DELAY_NORMAL仍然不會觸發該事件。 –