已废弃的Sensor.TYPE_ORIENTATION的等效替代方案

5

我正在寻找一种替代已弃用的Android传感器Sensor.TYPE_ORIENTATION的解决方案。

最常见的解决方案是将Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD组合起来,然后使用SensorManager#getRotationMatrix计算旋转矩阵,并使用SensorManager#getOrientation获取欧拉角。 另一个常见的解决方案是使用Sensor.TYPE_ROTATION_VECTOR,也会得到旋转矩阵和使用SensorManager#getOrientation获取欧拉角。

不幸的是,当旋转移动设备时,它们与TYPE_ORIENTATION表现完全不同。在桌子上放置手机并将其向上(俯仰)旋转90度(屏幕现在直接面向您),尝试使用两种类型。方位角和横滚角的计算欧拉角变得非常混乱(因为某个称为万向锁问题),而使用TYPE_ORIENTATION检索的度数值非常稳定(不准确但相当可靠)。TYPE_ORIENTATION的每个值(偏航、俯仰和横滚)似乎都是一种“投影”度数,没有万向锁问题。

有什么方法可以在不使用已弃用的TYPE_ORIENTATION传感器的情况下获得类似的度数(用于偏航、横滚和俯仰)(也许是从旋转矩阵中获取)?TYPE_ORIENTATION算法在内部是如何处理的?

1个回答

0

它是如何检测正确的方向和旋转横屏/竖屏的? - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接