1.问题描述:
在android中同时调用多个麦克风报错:
报错位置mr2.strat():第二个麦克风启动操作时报错。
报错内容:
android.media.MediaRecorder.start(Native Method)
代码如下:
录音权限和存储权限已授予。
private void startRecord(){
if(mr == null){
File dir = new File(Environment.getExternalStorageDirectory(),"sounds");
if(!dir.exists()){
dir.mkdirs();
}
String filename = string1.getText().toString();
SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");//设置日期格式
File soundFile = new File(dir,filename+df.format(new Date())+"_MIC"+".amr");
File soundFile2 = new File(dir,filename+df.format(new Date())+"_VOICE_COMMUNICATION"+".amr");
if(!soundFile.exists()){
try {
soundFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if(!soundFile2.exists()){
try {
soundFile2.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
mr = new MediaRecorder();
mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB); //设置输出格式
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); //设置编码格式
mr.setOutputFile(soundFile.getAbsolutePath());
mr2 = new MediaRecorder();
mr2.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); //音频输入源
mr2.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
mr2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
mr2.setOutputFile(soundFile2.getAbsolutePath());
try {
mr.prepare();
mr.start();//
mr2.prepare();
mr2.start();//**在这个位置报错**
} catch (IOException e) {
e.printStackTrace();
}
}
}
//停止录制,资源释放
private void stopRecord(){
if(mr != null){
mr.stop();
mr2.stop();
mr.release();
mr2.release();
mr = null;
mr2 = null;
}
}