距离上次写 获取手机拍照姿态角 有好几周的时间,中间单位的事情太忙了,这周好不容易有点时间,现在好好总结下获取手机姿态角的优化问题
通过上次总结的获取手机拍摄照片时的姿态角,链接:https://www.jianshu.com/p/a19f8aec91ca
获取的姿态角,以方位角为例,会类似于下图,角度跳动的非常快,变化的幅度随着用户轻微抖动越来越大,用户体验不好。最终要达到的目标类似于各位看官手机上的指南针效果,如丝般顺滑。排除动画因素哈。
我想到的第一解决方案是滤波,虽然我没看过滤波的算法,但是我知道他肯定是属于一种常见的滤波算法的,废话不多说,直接上菜。
(1)连续获取150个方位角(这是我自己设定的值哈,用户可以自己定),然后取平均值avg1.这一步应该好理解。
(2)计算平均值的一半,设为t1,计算平均值的2倍,设为t2.
(3)连续遍历这150个方位角,收集大于t1,并且小于t2的角度,收集完毕后,取平均值。这一步主要是考虑的是方位角在正北方向一会儿是360,一会儿是0度情况。
最终代码
如果你是以数字的形式显示方位角,上述代码应该可以满足要求,会有略微抖动,但是效果大大改善了。
如果你是以指南针的形式显示方位角,在显示动画的时候其他的角度都OK的,就是从0转到360度,或者从360度转到0度的时候特别恶心,需要特殊处理下,代码如下(这是参考的小米手机指南针的代码)
最后,看大家的留言情况,如果需求很旺盛,我就做成一个框架,共享给所有人。
我的QQ:623083313,非计算机专业的开发者
兄弟们,如果感觉有用的,请打赏打赏,谢谢老板!
网友评论