9

を実装するクラスがあり、を使用してデバイスをSensorEventListener取得したいと思います。 tilt AngleAccelerometer

インターネットで例を探しましたが、使用しています Sensor.TYPE_MAGNETIC_FIELD

次のチェックを行うとゼロ
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size()になるので、私のデバイスにはこのセンサーがないと思います。

tilt Angle値を使用するだけでを 取得する方法はありSensor.TYPE_ACCELEROMETERますか?

4

3 に答える 3

1

これを試して、

SensorManager sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);        

        final SensorEventListener mEventListener = new SensorEventListener() {
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }


            public void onSensorChanged(SensorEvent event) {
                // TODO Auto-generated method stub
                switch (event.sensor.getType()) {
                case Sensor.TYPE_ACCELEROMETER:
                    System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
                    break;

                case Sensor.TYPE_MAGNETIC_FIELD:
                    System.arraycopy(event.values, 0, mValuesMagnet, 0, 3);
                    break;
                }
            };
        };

        setListners(sensorManager, mEventListener);

SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
                SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);
                final CharSequence test;
                test = ","+mValuesOrientation[0] +","+mValuesOrientation[1]+ ","+ mValuesOrientation[2];
于 2012-08-29T10:10:26.877 に答える
1

加速度計を使用して傾きを読み取ることができます。加速度計を設定すると、重力が含まれていることがわかります。したがって、携帯電話をテーブルの上に上向きに置いた場合、Z 軸は 9.81 (重力) に近い位置に登録され、X 軸と Y 軸は 0 になります。携帯電話を傾けると、重力が投影されます。 x 軸および/または y 軸上。したがって、x と y の値から電話の傾きがわかります。

于 2014-02-09T22:20:07.320 に答える