Как получить RotationMatrix только с датчиком акселерометра в устройстве

Я хочу получить вращение устройства, и я как-то достиг этого, но не работает код, какого устройства нет с датчиком Magentic, датчиком ориентации и датчиком гироскопа. Но я видел некоторые приложения, которые работают как XClinometer и уровень iHandy бесплатно на устройстве. У устройства 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 ответ

Решение

Для примеров, на которые вы ссылаетесь, нужны только углы наклона, а не матрица вращения. Достаточно иметь акселерометры, чтобы получить углы наклона.

Матрица вращения содержит больше информации, чем углы наклона, а также требует гироскопов.

Другие вопросы по тегам