Android加速计只检测到两个维度的变化

Android加速计只检测到两个维度的变化,android,accelerometer,android-sensors,Android,Accelerometer,Android Sensors,我正在学习android中的加速计。我得到了新的价值观,当倾斜的手机周围的绿色和蓝色阵列,但不是红色的一个 这实际上是我的问题。下面是我使用的代码: private SensorManager sensorManager; ........... sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); sensorManager.registerListener(this,

我正在学习android中的加速计。我得到了新的价值观,当倾斜的手机周围的绿色和蓝色阵列,但不是红色的一个

这实际上是我的问题。下面是我使用的代码:

private SensorManager sensorManager;

...........

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);

...........

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            x = event.values[0];
            y = event.values[1];
            z = event.values[2];
        }
    }

对于红色的,唯一的变化是向上和向下的加速度。这种加速度主要由重力控制,因此数值只有轻微变化。

谢谢。但我认为一定有一种方法可以测量绕轴的旋转。是的,这是俯仰或滚动,取决于手机的方位。如果你认为它是屏幕和世界xy平面之间的角度,那么它就是arcos(event.values[2])。