如何getRotationMatrix在设备中只有加速计传感器

时间:2012-10-09 10:40:36

标签: android accelerometer sensormanager

我想获得设备旋转,但我已经以某种方式实现了但是代码无效,Magentic传感器,方向传感器和陀螺仪传感器不存在哪种设备。但我已经看到一些应用程序在设备上运行XClinometeriHandy level free。设备htc Explorer没有给出这些传感器不存在的值。请告诉我如何才能完成这项任务。 我已经使用了这个代码,但由于传感器不可用,所以没有得到任何值,所以也没有旋转矩阵。

  @Override
    public void onSensorChanged(SensorEvent event) {

        switch (event.sensor.getType()) {
        case Sensor.TYPE_ACCELEROMETER:
            // copy new accelerometer data into accel array and calculate
            // orientation
            System.arraycopy(event.values, 0, accel, 0, 3);
            calculateAccMagOrientation();
            break;

        case Sensor.TYPE_GYROSCOPE:
            // process gyro data
            gyroFunction(event);
            break;

        case Sensor.TYPE_MAGNETIC_FIELD:
            // copy new magnetometer data into magnet array
            System.arraycopy(event.values, 0, magnet, 0, 3);
            break;

        }

}

,方法是

public void calculateAccMagOrientation() {

         if (SensorManager.getRotationMatrix(rotationMatrix, null, accel,
                magnet)) {
            SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X,
                    SensorManager.AXIS_Y, mValuesOrientation);
            SensorManager.getOrientation(rotationMatrix, mValuesOrientation);

        }else{
            //float[] array = new float[9];
            if(magnet[0]<=0){
                System.out.println("herr.....");
                System.out.println();
            }else{
                System.out.println("null so herr.....");
            }
            /*on htc device it is coming here so i need code here to get angle as only received accelerometer sensor data.
           */
        }
    }

1 个答案:

答案 0 :(得分:1)

您链接的示例仅需要倾斜角度,而不是旋转矩阵。加速度计足以获得倾斜角度就足够了。

旋转矩阵包含的信息多于倾斜角度,它也需要陀螺仪。