在UI线程和子线程里都可以调用MediaRecorder.start,只是setAudioEncoder、prepare这些函数的调用必须按照一定的次序,不然就会报错。

解决方案 »

  1.   

    我在主线程new MediaRecorder 可以录音,在线程里就不行了报XXX已停止运行自动退出?下面的代码放在线程里的
    String fFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
            fFileName += "/s.3gp";
            kediaRecorder = new MediaRecorder();        kediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);        kediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);        kediaRecorder.setOutputFile( fFileName );        kediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);        try{
                //第5步:调用prepare方法
                kediaRecorder.prepare();
                //第6步:调用start方法开始录音
                kediaRecorder.start();------>这里报 XXX已停止运行,注释掉就不会?
                mthis.text="后台录音";
                //
            }catch (IOException e) {
                mthis.text="无法后台录音";
            }