Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android音频录制初始化失败_Android_Audiorecord - Fatal编程技术网

Android音频录制初始化失败

Android音频录制初始化失败,android,audiorecord,Android,Audiorecord,我正在为Android创建一个监听电话的应用程序。问题是初始化失败 我的日志: 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 na

我正在为Android创建一个监听电话的应用程序。问题是初始化失败

我的日志:

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();
编辑:
我只想要下行链路

您应该使用MediaRecorder instade of AudioRecord, Hear是录制音频并保存在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();
            }

尝试使用其他配置(例如8000 Hz而不是16000 Hz)。您也可以尝试使用
VOICE\u CALL
作为音频源,而不是
VOICE\u DOWNLINK
。这也会给你上行链路,但你正在测试的设备可能不支持只录制下行链路,因为语音通话录制是平台特有的功能。我不想将其保存到文件中。