2012-06-03 3 views
4

Android: Я хочу читать буферами с микрофона, так что я могу выполнять процесс на нем, Ниже мой кодAndroid: AudioRecord Код ошибки -20 при инициализации встроенного объекта AudioRecord

int sampleRateInHz = 8000;// 44100, 22050 and 11025 
     int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO; 
     int audioFormat = AudioFormat.ENCODING_PCM_16BIT; 

     //int bufferSize =11025 + 
     int bufferSize = AudioRecord.getMinBufferSize(sampleRateInHz,channelConfig, audioFormat); 


     short[] buffer = new short[bufferSize]; 

     AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRateInHz,channelConfig, audioFormat, bufferSize); 

     if(audioRecord.getState()== AudioRecord.STATE_INITIALIZED){ 
      audioRecord.startRecording(); 
      Log.e("recording", "before"); 


      boolean flag = true; 
      while (flag) { 
       int bufferReadResult = audioRecord.read(buffer, 0, bufferSize); 
       System.out.println(buffer); 
      } 

      audioRecord.stop(); 
      audioRecord.release(); 
     } 
     Log.e("recording", "stopeed"); 


<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> 

Я получаю следующее сообщение об ошибке каждый раз, когда Я пытаюсь проверить программу

06-04 00: 18: 17.222: E/AudioRecord-Java (488): [android.media.AudioRecord] Код ошибки -20 при инициализации собственного объекта AudioRecord.

ответ

0

Из того, что я понимаю, CHANNEL_CONFIGURATION_MONO обесценивается, и вы должны использовать вместо CHANNEL_IN_MONO при чтении в буфер. У меня была аналогичная проблема с созданием объекта AudioRecord, и это оказалось для меня решением.

+1

Мой уровень api равен 7, а в api 7 нет CHANNEL_IN_MONO только CHANNEL_CONFIGURATION_MONO –

+1

Я использовал api level 3 android platform 1.5, и проблема была у меня обновлена уровень api до уровня 7 api, который является платформой 2.1 и исправлен. Я также изменил с CHANNEL_CONFIGURATION_MONO на CHANNEL_IN_MONO. Я также заметил, что уровень api 3 в эмуляторе отсутствует для записи звука. спасибо за большую помощь. –

6

Это исключение также возникает, если

  1. аудиозапись уже в процессе или
  2. запись отсутствует или
  3. App не имеет надлежащего разрешения пример: приложение не имеет записи разрешений т.д.,
+5

Третье предложение здесь важно, так как ошибка не описательна вообще. Для кого-то еще, просто добавьте это в свой манифест: ajselvig