getMaxAmplitude方法返回幅度的单位是多少?

Fut*_*020 5 audio android noise

有谁知道该方法的返回单位是什么:

 MediaRecorder.getMaxAmplitude();
Run Code Online (Sandbox Code Playgroud)

Android MediaRecorder API文档仅指示此方法返回自上次调用以来采样点的最大绝对幅度,但未指定单位.是帕斯卡,毫帕斯卡尔,其他吗?

Fut*_*020 6

经过一番详细的搜索,我自己和一些大学得出了这个结论.因此,我对这些问题的回答并不完整,我正在写这个问题的答案.

MediaRecorder.getMaxAmplitude()函数返回无符号的16位整数值(0-32767).这些值可能是通过在-32768 ... +32767上使用abs()来计算的,类似于正常的CD质量样本值.负幅度只是镜像,因此幅度总是正的.

这些值与任何具体的校准物理属性无关.因此,这些值仅为0-100%(该麦克风的最大电压范围)的电输出的16位数字化.

麦克风将声压(帕斯卡)线性转换为电压.因此,api报告的值与声压相关,但它们在每个使用的设备上都不同,并且在很大程度上取决于品牌,型号和特定设备(电路,放大器等).这意味着如果没有声音,则很难判断值将手机麦克风校准为可靠的声压计.