调用getMaxAmplitude返回0

时间:2015-11-07 05:42:01

标签: java android

我正在制作一个女巫项目我必须找到录制声音的响度。

无论我拨打getMaxAmplitude()多少次,它总是显示0并且通过写amplitudeDb它始终显示-infinity。

请帮助我谢谢。

这是我的代码。

record1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

        record[0] = new MediaRecorder();
        record[0].setAudioSource(MediaRecorder.AudioSource.MIC);
        record[0].getMaxAmplitude();
        record[0].setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        record[0].setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        record[0].setOutputFile(FilePath);

        try {
            record[0].prepare();
            record[0].getMaxAmplitude();
        } catch(IOException e) {
            e.printStackTrace();
        }
        try {
            record[0].start();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

});

stop.setOnClickListener(new View.OnClickListener() {@Override
    public void onClick(View v) {
        try {
            record[0].stop();
        }

        catch(Exception e) {
            e.printStackTrace();
        }
        try {
            int amp = record[0].getMaxAmplitude();
            //String ampl = amp.toString();
            int x = 1;
            System.out.println("amp: " + amp);
            System.out.println("hello");
            //double amplitudeDb = 20 * Math.log10((double) Math.abs(amp));
            ampli.setText("" + amp);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        try {
            record[0].release();
        }
        catch(Exception e) {
            e.printStackTrace();
        }

    }

});

1 个答案:

答案 0 :(得分:0)

最后我理解getMaxAmplitude()的逻辑我必须在record [0] .stop()

之前写记录[0] .getMaxAmplitude()

一切都会好起来的。)