2013-04-01 6 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

Спасибо, звучит логика! –

Смежные вопросы