使用 MediaRecorder
我从设备的麦克风捕捉声音。从我得到的声音中,我只需要分析音量(声音响度),而无需将声音保存到文件中。
两个问题:
- 如何获取给定时刻的声音响度?
- 如何在不将声音保存到文件的情况下进行分析?
谢谢。
最佳答案
使用
mRecorder.getMaxAmplitude();
为了分析声音而不保存所有你需要的是使用
mRecorder.setOutputFile("/dev/null");
举个例子,希望对你有帮助
public class SoundMeter {
private MediaRecorder mRecorder = null;
public void start() {
if (mRecorder == null) {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
mRecorder.prepare();
mRecorder.start();
}
}
public void stop() {
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
}
public double getAmplitude() {
if (mRecorder != null)
return mRecorder.getMaxAmplitude();
else
return 0;
}
}
关于android:检测声级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181449/