月夜忆 2019-05-15 17:56 采纳率: 0%
浏览 2147
已结题

在android中同时调用多个麦克风报错:android.media.MediaRecorder.start(Native Method)

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;
        }
    }

  • 写回答

2条回答

  • threenewbee 2019-05-15 23:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误