0

私はAndroidでARアプリケーションを開発していますが、デバイスのロールの向きに関係なく、水準器のように水平方向と垂直方向の値を取得したいと考えています。例として、ユーザーがデバイスをポートレートモードで保持し、電話を回転させる場合があります。電話の地平線を自然の地平線と一致させたいと思います。センサーマネージャーから返されたロール値で遊んだことがありますが、ピッチが考慮されているようです(つまり、デバイスは現在ランドスケープモードになっているため、ピッチはロールに影響します)。

また、ピッチを読むときは、ロールに関係なく地平線を上下に動かしてほしい。現時点では、デバイスが90度回転すると、ピッチの変化は垂直方向ではなく水平方向に移動します。

ポインタはありますか?

前もって感謝します。

ポール

4

1 に答える 1

0

ええ、私が理解しているあなたの最善の策は、地面の方向を決定するために加速度計を使用することです。

このようなものを使用してください...

    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

onCreateメソッドに、これを入れます

    mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);

onResumeとこれで更新を処理します

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        float xAcceleration = event.values[0];
        float yAcceleration = event.values[1];
        float zAcceleration = event.values[2];

次に、これらの加速度の値を使用して、地面の方向を決定します。:-)私はその方法がはるかに流動的であると思います、私はそれが役立つことを願っています。:-)

詳細については、以下を確認してください: http: //developer.android.com/reference/android/hardware/SensorEvent.html#values

于 2011-04-17T17:04:32.087 に答える