我正在开发一个录音机应用程序。我想知道有什么方法可以在录制时找到音频的强度。我不想将录音保存在任何地方。我只想向用户展示麦克风捕捉到的声音是否比预定义的阈值大。
假设声音低于 2 分贝,它应该在红色 Canvas 中显示“低”。一旦声音变大并超过 2 分贝阈值, Canvas 应变为绿色并显示“高”消息。
是否可以使用 MediaRecorder 或我必须使用 AudioRecorder 类。以及如何解决。
提前致谢
最佳答案
您可以在记录开始时启动另一个线程,并使用getMaxAmplitude
函数捕获振幅。
下面是代码段。在这里,我们每250毫秒进行一次采样,并计算出最大幅度
public void run() {
int i = 0;
while(i == 0) {
try {
sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mRecorder != null) {
amplitude = mRecorder.getMaxAmplitude();
//Here you can put condition (low/high)
Log.i("AMPLITUDE", new Integer(amplitude).toString());
}
}
}