2010-08-25 49 views
8

我想開發一個小型的Android應用程序來測量當前的噪音水平(可能以dB爲單位)。但我不知道該在庫中尋找什麼。我不想記錄噪音。有人能給我一個指示什麼類可以看?Android中的查詢噪音水平

回答

4

我建議在尋找這些類:

android.media.AudioFormat 
android.media.AudioManager 
android.media.AudioTrack 

我們在Blinkendroid audio package曾幾何時使用它們。

+0

我看過這些,在我看來,你必須記錄一個文件,立即處理該文件,以獲得噪音水平,重複,這將是非常低效。沒有直接訪問那裏的麥克風... – fredley 2010-08-25 16:06:58

+0

也許儲存庫中的這三個類可能會幫助你: http://code.google.com/p/blinkendroid/source/browse/trunk/blinkendroid/src/org/cbase/blinkendroid/audio /?r = 96 我們在此項目中錄製,處理和可視化音頻,但是再次放棄。 – keyboardsurfer 2010-08-25 16:09:30

+0

我希望不做錄音,但我會檢查。 – Sebi 2010-08-25 16:11:32

0

以下代碼片段顯示了我們過去如何獲得噪聲級別。不幸的是,這些文檔沒有說明#getMaxAmplitude()返回的單位。

// Start recording but don't store data 
MediaRecorder mediaRecorder = new MediaRecorder(); 
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mediaRecorder.setOutputFile("/dev/null"); 
mediaRecorder.prepare(); 
mediaRecorder.start(); 

// Obtain maximum amplitude since last call of getMaxAmplitude() 
while(someCondition) { 
    int amplitude = mediaRecorder.getMaxAmplitude(); 
} 

// Don't forget to release 
mediaRecorder.reset(); 
mediaRecorder.release();