【问题标题】:Android MediaRecorder IllegalStateExceptionAndroid MediaRecorder IllegalStateException
【发布时间】:2012-06-07 14:54:26
【问题描述】:

我正在制作一个允许用户录制音频并将其保存在 SD 卡中某处的应用程序。我正在使用 MediaRecorder 来录制音频。

我正在重用 androiddevblog 网站上的一些代码,因为 stackoverflow 上的另一个用户推荐它来检查这些教程。

我的问题是,每当我单击按钮录制音频时,我都会收到一条错误消息,提示“您的应用程序已被强制停止”。我用调试器发现是因为我在recorder.stop()上有一个非法状态异常

我知道根据我的代码不会记录任何内容。我想首先确保文件被创建并保存。

我之前发布了这个问题,并解决了我原来的问题,但后来遇到了这个问题。所以它可能看起来是重复的。

public class MyRecorderActivity extends Activity{

private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder";
 private static final String AUDIO_RECORDER_FILE_EXT_3GP = ".3gp"    
private Button audio;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.questionandanswer);
....
....

 audio = (Button) findViewById(R.id.audio_recordactivity);
    audio.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

        startRecording();


        }
    });

 } 

  private String getFilename(){
        String filepath = Environment.getExternalStorageDirectory().getPath();
        File file = new File(filepath,AUDIO_RECORDER_FOLDER);

        if(!file.exists()){
                file.mkdirs();
        }

        return (file.getAbsolutePath()+ "/ " + System.currentTimeMillis() +  AUDIO_RECORDER_FILE_EXT_3GP);

  }

 private void startRecording(){
        MediaRecorder recorder = new MediaRecorder();

        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(getFilename());

        try {
                recorder.prepare();
                recorder.start();
        } catch (IllegalStateException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace();
        }

        recorder.stop();
        recorder.reset();
        recorder.release();
   }

}

【问题讨论】:

    标签: android android-sdcard android-sdk-2.3 illegalstateexception android-mediarecorder


    【解决方案1】:

    确保包含以下权限。

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    

    【讨论】:

    • 我已经添加了所有必需的权限
    【解决方案2】:

    可能是另一个记录处于活动状态(可能是默认记录器或另一个下载应用程序的记录器)停止该记录并再次执行操作,希望它有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多