微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 已弃用的Sensor.TYPE_ORIENTATION的等效替换

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

报告最多的解决方案是组合Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD,然后使用SensorManager#getRotationMatrix计算旋转矩阵,并使用SensorManager#getOrientation获取欧拉角.
一个报告的解决方案是使用Sensor.TYPE_ROTATION_VECTOR,它也通过使用SensorManager#getorientation以旋转矩阵和欧拉角结束

不幸的是,当旋转移动设备时,这些行为与TYPE_ORIENTATION完全不同.在手机放在桌面上然后将其调高(音高)至90°(屏幕现在直接朝向您)时尝试这两种类型.计算出的方位角和滚动的欧拉角变得非常狂野(导致称为Gimbal lock问题的原因),而使用TYPE_ORIENTATION检索的度数值非常稳定(不准确但非常好). TYPE_ORIENTATION的每个值(偏航,俯仰和滚动)似乎都是某种“投射”程度而没有万向节锁定问题.

如果不使用折旧的TYPE_ORIENTATION传感器(可能来自旋转矩阵),获得相似度数(偏航,滚动和俯仰)的方法是什么? TYPE_ORIENTATION算法如何在内部完成?

解决方法

getorientation中的方位角是磁北极与设备y轴投影到世界x-y平面之间的角度.当设备达到90°时,投影是零矢量,因此在这种情况下方位角没有意义,可以是任何值.在物理上,试图找到磁北和指向天空的矢量之间的角度是没有意义的.
你应该在 https://github.com/hoananguyen/dsensor/blob/master/dsensor/src/main/java/com/hoan/dsensor_master/DProcessedSensor.java看一下我的项目

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐