我目前正在android studio中制作一个android应用,该应用需要识别音频电平何时超过某个阈值。我目前遇到的问题是MediaRecorder.getMaxAmplitude()函数始终返回0.0。 我见过很多人遇到这个问题,但没有一个人得到解决。
我的代码:
MediaRecorder recorder = new MediaRecorder();
public void start() {
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/dev/null");
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void stop() {
try {
recorder.stop();
recorder.release();
recorder = null;
} catch (Exception e) {
e.printStackTrace();
}
}
public double getAmplitude() {
try {
return recorder.getMaxAmplitude();
} catch (Exception e) {
return 0;
}
}
值得注意的是,stop()函数也无法正常工作,但是在此之前调用getAmplitude()已经不起作用。另外我还发现自己返回的不是catch的0,而是实际值。
答案 0 :(得分:0)
您可以在启动记录器后使用计时器获取最大振幅值
$2