2012-06-16 16 views
6

我正在使用錄音機應用程序。我想知道有沒有什麼方法可以在錄音時找到音頻的強度。我不想在任何地方保存錄音。我只想告訴用戶麥克風捕捉的聲音是否大於預定義的閾值。如果聲音被捕獲在2分貝以下,它應該在紅色的畫布上顯示「低」。一旦聲音變大並傳遞2分貝閾值,畫布應該變成綠色並顯示「高」信息。如何在錄音時檢查音頻的強度(強度)?

是否有可能使用MediaRecorder或我必須使用AudioRecorder類。以及如何解決它。

在此先感謝

+0

惠......爲什麼downvote。這是完全適當的問題,滿足所有SO規範..? – Pargat

回答

9

錄製開始時,可​​以啓動另一個線程,並使用getMaxAmplitude功能來捕捉幅度。

下面是snippet.here我們正在爲每250毫秒採樣和計算的最大振幅

public void run() { 
      int i = 0; 
      while(i == 0) { 

       try { 
        sleep(250); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       if (mRecorder != null) { 
        amplitude = mRecorder.getMaxAmplitude(); 

        //Here you can put condition (low/high) 
        Log.i("AMPLITUDE", new Integer(amplitude).toString()); 
       } 

      } 
     }