我需要获得设备的方向(音高要具体), 我正在使用一种方法,涉及实现SensorEventListener加速度计和磁力计
问题是有些设备没有磁力计(我偶然发现了三星J7和J5,但假设有更多),我测试的所有其他设备都像魅力一样。现在我知道这些设备没有磁力计,所以我尝试注册已弃用的" TYPE_ORIENTATION"事件和" TYPE_ROTATION_VECTOR"事件但没有工作。
我在这些设备上获得的只是来自加速度计的事件。
我知道这是可能的,因为我已经在这些手机上下载了泡泡级应用程序并且它们可以工作(指南针剂量) 感谢
编辑: 我需要通过倾斜手机滚动视图,所以我需要校准一次,而不是知道音高是大于还是小于初始校准
答案 0 :(得分:1)
你需要低通滤波器加速度计来获得重力矢量。
float[] gravity = low pass filter accelerometer
计算重力的范数
float gravityNorm = calculate the norm of gravity.
然后音高
(float) Math.asin(-gravity[1] / gravityNorm))
对于上面的公式,请阅读https://github.com/hoananguyen/dsensor
项目DSensor中DSensor类中的TYPE_PITCH文档