一周前,我对 Android 运动传感器一无所知。在了解了称为虚拟现实的神奇事物后,我开始搜索使用哪些传感器来获得这些结果。我有一个 APP 的想法,但我仍然不知道在以下情况下我应该使用哪些传感器:
我必须自己引用手机方向。我的意思是,我应该能够逐步隔离每个轴。类似的东西:
在这种情况下,使用陀螺仪,我认为这种变化是在 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/