Android AudioRecord初始化失败

问题描述:

我正在为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

,您应该使用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