MediaRecorder.getMaxAmplitude()始终返回0.0

时间:2018-06-25 13:31:13

标签: java android mediarecorder

我目前正在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,而是实际值。

1 个答案:

答案 0 :(得分:0)

您可以在启动记录器后使用计时器获取最大振幅值

$2