在android中测量设备的精确旋转角度

在android中测量设备的精确旋转角度,android,rotation,accelerometer,angle,Android,Rotation,Accelerometer,Angle,我需要从每个轴获得android设备的准确角度 首先,我应该说我在网络上搜索过,也搜索过stackoverflow,我看到了如下页面: 但是他们没有帮助。我使用了其中一些,但它们给出了错误的值 如果设备中的轴如下所示: 我需要得到这些旋转角度: 我不想使用除加速计之外的任何硬件传感器,我使用的是API 17。 我认为这是可能的基于赛车游戏,但我不知道如何做到这一点 如果你能帮助我,我将不胜感激。 谢谢单独使用类型加速计无法获得所有旋转。您还需要输入磁场。如果您不关心数值变化对快速移动的敏

我需要从每个轴获得android设备的准确角度

首先,我应该说我在网络上搜索过,也搜索过stackoverflow,我看到了如下页面:

但是他们没有帮助。我使用了其中一些,但它们给出了错误的值

如果设备中的轴如下所示:

我需要得到这些旋转角度:

我不想使用除加速计之外的任何硬件传感器,我使用的是API 17。 我认为这是可能的基于赛车游戏,但我不知道如何做到这一点

如果你能帮助我,我将不胜感激。
谢谢

单独使用
类型加速计
无法获得所有旋转。您还需要
输入磁场
。如果您不关心数值变化对快速移动的敏感程度,则需要
TYPE\u重力
TYPE\u加速计
以及
TYPE\u磁场

对于相对于z轴的旋转,您可以按照问题中的第一个链接进行操作。

对于相对于x轴和y轴的旋转,您可以使用俯仰、滚动和屏幕朝向。

您需要参考这一点。正如我之前所说,我只想通过加速度计获得方向。我没有任何其他硬件传感器。也请考虑,在API级别8中,Type取向不适用,而且我也不能访问属于API 20的传感器,如StRigyType Type加速。谢谢。我是否需要另一个硬件传感器来访问类型\u磁场?通常大多数手机都有类型\u加速计和类型\u磁场。如果存在类型\重力,则使用它代替类型\加速度计。如果你使用类型\加速度计,那么你必须使用低通滤波器来过滤掉x和y加速度。我检查了它们,不幸的是,我无法访问类型\磁场和类型\重力。你有什么样的设备?android设备很少没有类型_磁场。HTC Desire 310与android 4.2.2兼容。我编写了简单的代码来检查它:Sensor mMagnetometer=mSensorManager.getDefaultSensor(Sensor.TYPE\u MAGNETIC\u FIELD);在sensorchange方法中,我使用了以下代码:if(event.sensor==mMagnetometer){Toast.makeText(这个“OK”,Toast.LENGTH_SHORT).show()}我使用了相同的代码来检查我的加速计,它工作了。