2015-11-07 92 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()

一切將非常具有好然後:)