从android加速度计获取倾斜角度

时间:2012-08-22 04:44:35

标签: android accelerometer angle tilt

我有一个实现SensorEventListener的类,我想得到 使用tilt Angle设备的Accelerometer

我在互联网上查找了一些例子但是他们使用了 Sensor.TYPE_MAGNETIC_FIELD

我相信我的设备没有这个传感器,因为当我这样做的时候 以下检查
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size(),我

有没有办法通过使用获得tilt Angle Sensor.TYPE_ACCELEROMETER值?

3 个答案:

答案 0 :(得分:2)

正如人们建议你可以使用加速度计和磁传感器来做到这一点。

这是一篇包含完整解决方案的博文。

http://www.ahotbrew.com/how-to-detect-forward-and-backward-tilt/

答案 1 :(得分:0)

试试这个,

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];

答案 2 :(得分:0)

您可以使用加速计获得倾斜度读数。如果您设置加速度计,您会注意到它包含重力。因此,如果你的手机正面朝上,那么z轴会在接近9.81(重力)的位置注册,x和y轴将为0.当你倾斜手机时,重力会被投射出来在x和/或y轴上。因此,x和y值将告诉您手机的倾斜度。