Android 如何获得设备中只有加速度传感器的旋转矩阵

Android 如何获得设备中只有加速度传感器的旋转矩阵,android,accelerometer,sensormanager,Android,Accelerometer,Sensormanager,我想让设备旋转,我已经实现了某种程度上,但代码不工作,该设备不存在磁传感器,方向传感器和陀螺仪传感器。但我看到一些应用程序在设备上运行,就像在设备上一样。设备htc Explorer没有给出值,因为这些传感器不存在。请告诉我如何才能完成这项任务。 我已经使用了这个代码,但作为传感器不可用,所以没有得到任何值,所以也没有旋转矩阵 @Override public void onSensorChanged(SensorEvent event) { switch (eve

我想让设备旋转,我已经实现了某种程度上,但代码不工作,该设备不存在磁传感器,方向传感器和陀螺仪传感器。但我看到一些应用程序在设备上运行,就像在设备上一样。设备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.
           */
        }
    }
public void calculateacmagorition(){
if(传感器管理器)getRotationMatrix(旋转矩阵、null、加速度、,
磁铁){
SensorManager.剩余协调系统(旋转矩阵、SensorManager.AXIS_X、,
SensorManager.AXIS_Y,mValuesOrientation);
SensorManager.getOrientation(旋转矩阵、M值或方向);
}否则{
//float[]数组=新的float[9];

如果(磁铁[0]您链接到的示例只需要倾斜角度,而不需要旋转矩阵。使用加速计获取倾斜角度就足够了


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

对于倾斜角度,我需要做的是使用Math.atan2(y/x)是有效的或其他方式..顺便说一句,我用这个我不确定我是否理解你的问题。是的,你通过一个反三角函数得到角度。你必须给出你感兴趣的倾斜角度的明确定义和你正在使用的符号。你能建议我app测斜仪是如何按照设备mo绘制气泡的吗在用户界面上移动,因为我需要做一些类似的工作。事实上,我已经使用了旋转矩阵(如果存在),但在htc上不是这样。请告诉我你是否知道关于这一点。角度部分我使用了三角函数。如果我正确理解你的问题:我将使用加速计,用a平滑值,然后计算角度用相应的反三角函数。这就足以交互绘制气泡,它将合理而平滑地移动。