1

私はAndroid 2.2アプリケーションを開発しています。

ユーザーがデバイスを上下に動かしたときと、左右に動かしたときを知りたいです。垂直に取り付けると、デバイスは静止します。つまり、回転角度が必要な拡張現実アプリケーションにカメラ (カメラの軸に沿った Y 軸) を使用します。

remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR); 

これは私のコードです:

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        accelValues = event.values;
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
        magneValues = event.values;

  updateOrientation(calculateOrientation());
}

private float[] calculateOrientation() {
    float[] values = new float[3];
    float[] R = new float[9];
    float[] outR = new float[9];

    SensorManager.getRotationMatrix(R, null, accelValues, magneValues);
    SensorManager.remapCoordinateSystem(R, 
                                          SensorManager.AXIS_X, 
                                          SensorManager.AXIS_Z, 
                                          outR);

    SensorManager.getOrientation(outR, values);

    // Convert from Radians to Degrees.
    values[0] = (float) Math.toDegrees(values[0]); // Azimuth, rotation around Z
    values[1] = (float) Math.toDegrees(values[1]); // Pitch, rotation around X
    values[2] = (float) Math.toDegrees(values[2]); // Roll, rotation around Y

    return values;
}

しかし、ユーザーがデバイスを左に移動したか右に移動したかをどのように知ることができるかわかりません。

また、ユーザーが歩いているかどうかをどのように知ることができますか?

Azimuth、Pitch、Roll がありますが、これらの値をどのように使用すればよいかわかりません。

何かアドバイス?

4

0 に答える 0