月夜忆 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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元