此函数的返回值应为0到32767之间的整数,表示音频的幅度。
然而,经过测试,很容易达到最大值(32767)即使是非常小的声音。例如,婴儿哭声将输出(32767)幅度。但是一个小声音也会输出(32767)幅度。
请问如何管理此功能的返回值?
感谢您的帮助。
答案 0 :(得分:0)
让我们说你的传感器/麦克风/解码器的响应范围是0到100,所以0映射到0,100映射到32767。
ScaleConstant = 32767/100
输出50:
value = 50*ScaleConstant
答案 1 :(得分:0)
您的设备似乎对声音非常敏感。我之前在android中实现过这段代码没有问题。我建议在另一台设备上测试它并检查问题是否仍然存在或者代码是否有问题。
getMaxAmplitude()函数返回0到+32767之间的值,该值是噪声响度的估计值,作为声压的度量。要近似获得dB值,您可以在android中使用以下代码,这是对数学方程的直接解释。
20 * Math.log10(mediaRecorderObject.getMaxAmplitude())
返回近似的dB值。
我建议的另一件事是,您使用手机校准应用程序。在应用程序启动之前,您可以在静默环境中进行录制。因此,如果在两个不同手机上运行的应用程序在静音环境中显示值为4000和6000,则可以添加适合您应用程序的缩放系数。