【问题标题】:how to getRotationMatrix having only accelerometer sensor in device如何获取设备中只有加速度计传感器的RotationMatrix
【发布时间】:2012-10-09 10:40:35
【问题描述】:

我想获得设备旋转,我已经以某种方式实现了,但代码无法正常工作,哪个设备不存在磁传感器、方向传感器和陀螺仪传感器。但是我已经看到一些应用程序在设备上像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.
           */
        }
    }

【问题讨论】:

    标签: android accelerometer sensormanager


    【解决方案1】:

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

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

    【讨论】:

    • 对于倾斜角度我需要做什么。
    • 正在使用 Math.atan2(y/x) 是有效的或其他方式..顺便说一句我使用这个
    • 我不确定我是否理解您的问题。是的,您可以通过反三角函数之一获得角度。您必须明确定义您感兴趣的倾斜角度以及您使用的符号。
    • 你能建议我应用测斜仪如何根据 UI 上的设备移动绘制气泡,因为我需要做类似的工作。实际上我已经使用旋转矩阵(如果存在)但在 htc 上它不是所以请告诉我你是否知道这件事。我用三角函数做的角度部分。
    • 如果我正确理解您的问题:我会使用加速度计,使用 low-pass filter 平滑值,然后使用相应的反三角函数计算角度。这足以交互式地绘制气泡,它会合理流畅地移动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多