2015-07-10 2 views
0

Я создаю приложение для Android, которое прослушивает телефонный звонок. Проблема в том, что инициализация терпит неудачу.Ошибка инициализации Android AudioRecord

Мой журнал:

E/AudioRecord﹕ Could not get audio input for record source 3 
E/AudioRecord-JNI﹕ Error creating AudioRecord instance: initialization check failed. 
E/android.media.AudioRecord﹕ Error code -20 when initializing native AudioRecord object. 

Мой код:

public AudioRecord recorder; 

private int sampleRate = 16000; 
private int channelConfig = AudioFormat.CHANNEL_IN_MONO; 
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT; 
int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat); 

recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, sampleRate, channelConfig, audioFormat, minBufSize * 10); 
recorder.startRecording(); 

EDIT: Я хочу только DOWNLINK

+0

Попробуйте использовать другие конфигурации (например 8000 Гц вместо 16000 Гц). Вы также можете попробовать использовать VOICE_CALL в качестве источника звука вместо 'VOICE_DOWNLINK'. Это также даст вам восходящую линию связи, но возможно, что устройство, которое вы тестируете, просто не поддерживает запись только нисходящей линии связи, поскольку запись голосовых вызовов является специфичной для платформы. – Michael

ответ

0

Вы должны использовать MediaRecorder instade из AudioRecord, Слышать это один пример для записи аудио и сохранить в своей SDCard.

MediaRecorder myAudioRecorder; 
    outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp"; 
    myAudioRecorder=new MediaRecorder(); 
    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
    myAudioRecorder.setOutputFile(outputFile); 

Вы можете начать запись по событию нажатия кнопки, используя ниже код

  try { 
       myAudioRecorder.prepare(); 
       myAudioRecorder.start(); 
      } 

      catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
+0

Я не хочу сохранять его в файл. – koca2000

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