0
我需要能夠測量加速度計的變化,而不是其實際位置。我需要在它周圍移動一個精靈,並且只有當設備的「默認」(如果你願意的話)平放在桌子上時,它纔會起作用。我需要能夠衡量其變化。我聽說矩陣乘法和事情是必要的,但有沒有更簡單的方法來做到這一點?測量加速度計的變化。不是位置
我需要能夠測量加速度計的變化,而不是其實際位置。我需要在它周圍移動一個精靈,並且只有當設備的「默認」(如果你願意的話)平放在桌子上時,它纔會起作用。我需要能夠衡量其變化。我聽說矩陣乘法和事情是必要的,但有沒有更簡單的方法來做到這一點?測量加速度計的變化。不是位置
註冊SensorEventListener時,必須覆蓋onSensorChanged()。這將返回Z軸上X,Y,&的變化。如果你想從這個數據計算旋轉矩陣,你還需要使用磁場傳感器。怎麼樣?這應該讓你去:
// Deduced from Accelerometer data
private float[] gravityMatrix = new float[3];
// Magnetic field
private float[] geomagneticMatrix = new float[3];
private boolean sensorReady = false;
private int counter = 0;
public void onSensorChanged(SensorEvent event) {
float[] mIdentityMatrix = new float[16];
mIdentityMatrix[0] = 1;
mIdentityMatrix[4] = 1;
mIdentityMatrix[8] = 1;
mIdentityMatrix[12] = 1;
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
if (counter++ % 10 == 0) {
gravityMatrix = event.values.clone();
sensorReady = true;
}
}
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
geomagneticMatrix = event.values.clone();
if (sensorReady)
SensorManager.getRotationMatrix(mRotationMatrix,
mIdentityMatrix, gravityMatrix, geomagneticMatrix);
}
這真的不那麼難。您也可以使用旋轉傳感器,但並非所有設備都具有此功能。 –
我應該如何使用mRotationMatrix以及哪裏可以獲得計算出的x,y和z值?謝謝。 – user2005938
他們在方法定義中解釋它:http://goo.gl/A6kk0w –