Android 不推荐使用的Sensor.TYPE_方向的等效替换件

Android 不推荐使用的Sensor.TYPE_方向的等效替换件,android,android-sensors,Android,Android Sensors,我正在寻找一种替代不推荐使用的Android传感器的解决方案传感器。键入_-ORIENTATION 报道最多的解决方案是将传感器、类型加速计和传感器、类型磁场组合在一起,然后使用计算旋转矩阵,并使用获得欧拉角。 另一个报告的解决方案是使用传感器。键入_ROTATION_VECTOR,通过使用传感器管理器#获取方向 不幸的是,当旋转移动设备时,这些行为与类型_方向完全不同。当你的手机放在桌上时,试一下这两种类型,然后把它调高(俯仰)到90°(屏幕现在正对着你)。计算出的方位角和横滚角的欧拉角变得非

我正在寻找一种替代不推荐使用的Android传感器的解决方案
传感器。键入_-ORIENTATION

报道最多的解决方案是将
传感器、类型加速计
传感器、类型磁场
组合在一起,然后使用计算旋转矩阵,并使用获得欧拉角。 另一个报告的解决方案是使用
传感器。键入_ROTATION_VECTOR
,通过使用
传感器管理器#获取方向

不幸的是,当旋转移动设备时,这些行为与
类型_方向
完全不同。当你的手机放在桌上时,试一下这两种类型,然后把它调高(俯仰)到90°(屏幕现在正对着你)。计算出的方位角和横滚角的欧拉角变得非常疯狂(这是所谓问题的原因),而使用
TYPE_ORIENTATION
检索到的度数值非常稳定(不精确,但非常正常)。
类型_方向的每个值(偏航、俯仰和滚转)
似乎都是某种“投影”度数,而不存在万向节锁问题


如果不使用折旧后的
TYPE_方向
传感器(可能来自旋转矩阵),获得类似角度(偏航、横摇和俯仰)的方法是什么?
TYPE\u-ORIENTATION
算法在内部是如何实现的?
getOrientation
中的
方位角是磁北与设备y轴投影到世界x-y平面之间的角度。当设备达到90°时,投影为零矢量,因此在这种情况下方位角没有意义,可以是任何值。从物理上讲,试图找出磁北和指向天空的矢量之间的角度是没有意义的。

您应该看看我在

上的项目,如何检测正确的方向和旋转横向/纵向?