2015-11-07 81 views
1

我正在创建一个女巫项目,我必须找到录制声音的响度。调用getMaxAmplitude返回0

无论我打电话多少次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(); 
     } 

    } 

}); 

回答

0

最后我明白getMaxAmplitude(逻辑)ijust必须写记录[0] .getMaxAmplitude()只记录[0]之前.stop()

一切将非常具有好然后:)