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

时间:2012-05-19 20:01:55

标签: android audio noise

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

 MediaRecorder.getMaxAmplitude();

Android MediaRecorder API文档仅指示此方法返回自上次调用以来采样点的最大绝对幅度,但未指定单位。它是pascal,milli-pascal,还是其他?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:3)

MediaRecorder.getMaxAmplitude()值介于0到32,767之间

(注意:32,767是有符号整数的最大值)

单位不标准。

在我的应用中,我通常将任何大于18000的值视为“响亮”,大约是最大值的50%。

答案 2 :(得分:0)

每个不同的设备或麦克风的测量单位都不同。如果您想知道,则必须根据校准的源或测量仪器测试每个特定的麦克风模型。