2010-11-20 95 views
0

我得到了一種奇怪的問題與我的宏達願望。Android傳感器問題,當拔掉USB

我目前正在使用加速度計和地磁傳感器測試一些opengl的東西。

看來他們兩個人有時會返回(相當一些)完全相同的值。

我得到這個在我的onSensorChanged()

if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
     gravity = event.values; 
    } 
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { 
     geomagnetic = event.values; 
    } 

,我不知道爲什麼,但是當我拔下USB(電腦),它是剛開糟糕的是,(我用放入系統值圍繞旋轉攝像頭一個像天空地圖的對象,當我拔掉,它看起來像值是正確的約1每2秒〜)。

有時(與usb插入並看着logcat)它工作正常,永遠不會從兩個傳感器得到相同的值。

它不是我的設備,其他程序像天空地圖運行良好,但我不明白我做錯了什麼。 我從來沒有混淆過這兩個陣列的重力和地磁,它們是全局的,用於SensorManager.getRotationMatrix(R,gravity,geomagnetic)。

我想知道如果我只是沒有得到太快的值,但即使我在偵聽器中定義了SENSOR_DELAY_UI,它也是一樣的故事。

回答

1

嘆息我....

gravity = event.values;指向它。一個簡單的循環,如:

for (int i=0 ; i<3 ; i++) { 
      gravity[i] = event.values[i]; 
} 

和它的確定 (爲什麼我總是發現某處詢問後的解決方案...)