2015-07-10 543 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(); 

編輯: 我只想下行

+0

嘗試使用其他配置(例如8000赫茲,而不是16000赫茲)。您也可以嘗試使用'VOICE_CALL'作爲音源,而不是'VOICE_DOWNLINK'。這也會給你上行鏈路,但是你正在測試的設備可能不支持只記錄下行鏈路,因爲語音通話記錄是一個特定於平臺的功能。 – Michael

回答

0

,您應該使用AudioRecord的MediaRecorder instade, 聽到的是備案一例音頻並保存在您的SD卡中。

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