我需要能够测量加速度计的变化,而不是它的实际位置。我需要用它来移动一个精灵,并且只有当设备的'默认'(如果你愿意)在桌子上是平的时它才有效。我需要能够衡量它的变化。我听说过矩阵乘法,需要一些东西,但有没有更简单的方法呢?
答案 0 :(得分:1)
注册SensorEventListener时,必须覆盖onSensorChanged()。这将返回X,Y和&的变化。 Z轴。如果要根据此数据计算旋转矩阵,还需要使用磁场传感器。怎么回事?这应该让你去:
// 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);
}