繁体   English   中英

从没有磁力计的设备获取音高

[英]Getting pitch from devices that dont have magnetometer

我需要获取设备的方向(具体来说是音高),我使用的方法涉及实现SensorEventListener加速度计和磁力计

问题是某些设备没有磁力计(我偶然发现了三星J7和J5,但假设还有更多的话),我测试过的所有其他设备都具有吸引力。 现在,我确实知道这些设备没有磁力计,因此我尝试注册不推荐使用的“ TYPE_ORIENTATION”事件和“ TYPE_ROTATION_VECTOR”事件,但均无用。

我在这些设备上得到的只是来自加速度计的事件。

我知道这是有可能的,因为我已经在这些手机上下载了气泡级应用程序,并且它们可以正常工作(包括剂量)谢谢

编辑:我需要通过倾斜手机来滚动视图,所以我需要校准一次,然后才知道音调是大还是小,然后进行初始校准

您需要使用低通滤波器加速度计来获取重力矢量。

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的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM