android - 仅使用陀螺仪和加速度计在 ANDROID 上的任何轴上获得可靠当前角度的正确方法

标签 android orientation accelerometer gyroscope

一周前,我对 Android 运动传感器一无所知。在了解了称为虚拟现实的神奇事物后,我开始搜索使用哪些传感器来获得这些结果。我有一个 APP 的想法,但我仍然不知道在以下情况下我应该使用哪些传感器:

我必须自己引用手机方向。我的意思是,我应该能够逐步隔离每个轴。类似的东西:

enter image description here

在这种情况下,使用陀螺仪,我认为这种变化是在 Z 轴上。 对于这种情况,我只使用陀螺仪得到了很好的结果,但在重复几次之后,我遇到了陀螺仪传感器的一个著名问题:漂移。

完成本教程后: http://www.thousand-thoughts.com/articles/#articles

事情在我脑海中变得更加清晰,但我仍然遇到真实运动之间的延迟等问题,以及当我改变设备方向时输出和错误输出(我认为重力是罪魁祸首)。

是否有一些代码示例说明如何仅使用陀螺仪和加速度计传感器为每个轴获取 0 - 360 度?

(我可能犯了一些英语错误。抱歉)

最佳答案

以下代码将为您提供正确的倾斜角度,但前提是您的手机 Z 轴为 0。(如您所示)。 当开始改变 Z 轴时,它会出现问题,我仍在努力。 (*向左倾斜时度数有负“-”号,向右倾斜时有“+”号)

float[] mGravity;
float[] mGeomagnetic;


    float[] temp = new float[9];
    float[] RR = new float[9];
    //Load rotation matrix into R
    SensorManager.getRotationMatrix(temp, null,
            mGravity, mGeomagnetic);

    //Remap to camera's point-of-view
    SensorManager.remapCoordinateSystem(temp,
            SensorManager.AXIS_X,
            SensorManager.AXIS_Z, RR);

    //Return the orientation values
    float[] values = new float[3];
    SensorManager.getOrientation(RR, values);

    Double degrees = (values[2] * 180) / Math.PI;

关于android - 仅使用陀螺仪和加速度计在 ANDROID 上的任何轴上获得可靠当前角度的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900787/

相关文章:

android - 由于 ScrollView,启动 Activity 后键盘出现

android - getDefaultDisplay().getRotation();总是返回相同的值

Android YouTube api v3 - 方向

c++ - opengl中的相机无法正常工作

Android - 在什么情况下会触发 onAccuracyChanged()?

java - 打开 SQLite 数据库时出现 NullPointerException

Android:表格单元格的高度应该得到前一个单元格的高度

android - CSS 图像/背景无法在智能手机上启动?

iphone - UIImageView旋转影响位置?

iphone - 如何处理加速,因为它不应该与显示刷新率 Hook ?