测量加速度计的变化。没有位置

时间:2014-01-28 00:26:59

标签: android accelerometer

我需要能够测量加速度计的变化,而不是它的实际位置。我需要用它来移动一个精灵,并且只有当设备的'默认'(如果你愿意)在桌子上是平的时它才有效。我需要能够衡量它的变化。我听说过矩阵乘法,需要一些东西,但有没有更简单的方法呢?

1 个答案:

答案 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);
    }