此函数的返回值应该是一个从0到32767的整数,表示音频的振幅。
然而,经过测试,即使是很小的声音也很容易达到最大值(32767)。例如,婴儿的哭声将输出(32767)振幅。但一小部分声音也会输出(32767)振幅。
请问如何管理此函数的返回值?
谢谢你的帮助。
发布于 2013-02-08 15:54:04
假设您的传感器/麦克风/解码器的响应范围在0到100之间,因此0映射到0,100映射到32767。
ScaleConstant = 32767/100 对于50的输出:
value = 50*ScaleConstant发布于 2016-06-09 05:10:32
看起来你的设备对声音很敏感。我以前在android中实现过这段代码,没有任何问题。我建议在另一台设备上测试它,并检查问题是否仍然存在,或者代码是否有问题。
getMaxAmplitude()函数返回一个介于0到+32767之间的值,该值是噪声响度的估计值,用于测量声压。要近似获得dB中的值,您可以在android中使用以下代码,这是对数学方程的直接解释。
20 * Math.log10(mediaRecorderObject.getMaxAmplitude())这将返回一个近似的dB值。
我建议的另一件事是,你用手机校准应用程序。在应用程序启动之前,您可以在静默环境中进行录音。因此,如果在两个不同手机上运行的应用程序在静默环境中显示录音的值为4000和6000,您可以添加适合您的应用程序的缩放因子。
https://stackoverflow.com/questions/14767924
复制相似问题