2013-04-01 54 views
0

我正在嘗試閱讀和理解Android中的音頻。在我的搜索中,我來到了this article。在這裏他寫了一段代碼來以wav格式記錄音頻。但有一兩件事我不完全理解,那就是他的code第一環:通過採樣率記錄音頻循環?

public class ExtAudioRecorder 
{ 
    private final static int[] sampleRates = {44100, 22050, 11025, 8000}; 

    public static ExtAudioRecorder getInstanse(Boolean recordingCompressed) 
    { 
     ExtAudioRecorder result = null; 

     if(recordingCompressed) 
     { 
      result = new ExtAudioRecorder( false, 
              AudioSource.MIC, 
              sampleRates[3], 
              AudioFormat.CHANNEL_CONFIGURATION_MONO, 
              AudioFormat.ENCODING_PCM_16BIT); 
     } 
     else 
     { 
      int i=0; 
      do 
      { 
       result = new ExtAudioRecorder( true, 
               AudioSource.MIC, 
               sampleRates[i], 
               AudioFormat.CHANNEL_CONFIGURATION_MONO, 
               AudioFormat.ENCODING_PCM_16BIT); 

      } while((++i<sampleRates.length) & !(result.getState() == ExtAudioRecorder.State.INITIALIZING)); 
     } 
     return result; 

他給喜歡它的一個基本信息,但我不完全得到這個。這是否與不同類型的Android設備的性能有關?無論如何,希望有人能照亮這件事對我來說:)

回答

2

他正試圖初始化不同的採樣率音頻記錄,從這些{44100,22050,11025,8000}。

取決於底層硬件上,不是所有的採樣率可以由設備支持。

雖然文件說:

「 44100Hz,目前這是保證在所有設備上工作的唯一速度,但其他費率,如22050,16000,11025,並可能在某些設備上工作」

我認爲作者已經編寫代碼來確保如果在採樣率下初始化失敗,嘗試以某種其他採樣率進行初始化,除非初始化成功,這是通過檢查給出的在循環條件下製作。

+0

感謝,聽起來邏輯! –