getRotationMatrix始终为false,解决方案不起作用

时间:2015-05-08 15:45:26

标签: android sensor

我正在尝试检测旋转,而不是屏幕方向更改。

我在getRotationMatrix()上只得到了一个假。

我找到了解决方案here,但它对我不起作用。

@Override
public void onSensorChanged(SensorEvent event) {
    // This method will be called when the accelerometer values are changing.
    if (event == null || event.values.length == 0) throw new IllegalArgumentException();
    else {
        // Handle the events for which we registered
        switch (event.sensor.getType()) {
            case Sensor.TYPE_ACCELEROMETER:
                Log.i(TAG, "detected Accelerometer");
                    mValuesAccel =  event.values;

                break;

            case Sensor.TYPE_MAGNETIC_FIELD:
                Log.i(TAG, "detected Magneticfield");
                    mValuesMagnet = event.values;

                break;
        }

        Log.i(TAG, ""+ SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet));
        SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);

        mRotationListener.onChange(mValuesOrientation);

    }

}

1 个答案:

答案 0 :(得分:2)

检查您的设备是否有指南针。 如果没有指南针,则mValuesMagnet始终为空,因此getRotationMatrix将返回false。