2015-06-09 57 views
2

我正在嘗試爲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); 

} 

任何想法,爲什麼它不會工作?

回答

0

所以..我剛剛發現問題來自哪裏。 我的平板電腦的磁蓋與磁力計混淆,導致遊戲旋轉矢量傳感器和磁場傳感器不發送數據。 我不能相信我花了幾個小時摸我的頭,以解決這個問題...

1

好吧,如果你要使用TYPE_ROTATION_VECTOR,從SENSOR_DELAY_GAMESENSOR_DELAY_NORMAL

Sensor sensor = _sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); 
     _sensorManager.registerListener(_sensorEventListener, sensor, 0, _sensorManager.SENSOR_DELAY_NORMAL) 
+0

謝謝,但我想要做的是獲得旋轉矩陣,所以使用TYPE_ROTATION_VECTOR允許我直接獲取值(我已更新我的帖子) –

+0

我已更新我的答案 – Jorgesys

+0

不幸的是,更改爲SENSOR_DELAY_NORMAL仍然不會觸發該事件。 –

0

你是否已經嘗試過SENSOR_DELAY_FASTEST的變化?

+0

也無法正常工作... –

0

由於registerListener不會拋出異常,如果你通過一個空sensor,你應該檢查sensornull。它看起來像你的設備沒有Sensor.TYPE_ROTATION_VECTOR

+0

設備具有傳感器,它在各種其他應用程序中檢測到registerListener不返回null。 今天早上,在我的平板電腦上再次嘗試時,傳感器發送了數據。它現在正在工作,我不知道爲什麼...可能是一個晚上的Android更新? –