Android Audio Recorder的** getMaxAmplitude()**在不同的设备上返回不同的值

时间:2013-12-13 10:37:32

标签: android audio audio-recording

我在应用程序中使用了Android的录音机来计算周围的噪音。

我使用getMaxAmplitude()函数获得了最大振幅,并使用此公式将其转换为db:

db = 20 * Math.log10( getMaxAmplitude() / ref )

其中ref=32767(只是参考值)

但是当我在不同的设备中测试应用程序时,“db”是不一样的。这意味着getMaxAmplitude()因设备而异。

如果在sony tipo中显示-40db表示在三星S4中它的-20db。

为什么会出现这种变化?

1 个答案:

答案 0 :(得分:0)

不同的设备将具有不同的麦克风,具有不同的灵敏度,以及不同的音频硬件/前置放大器。此外,他们可以应用不同的输入增益,均衡器,以及自动增益控制(AGC)和降噪算法,这可以解释您所看到的巨大差异。

在某些设备上,您可以运行AlsaMixer(以root用户身份)来控制麦克风输入增益。