Android MediaRecorder导致强制停止错误

时间:2012-06-07 00:27:35

标签: android android-2.2-froyo android-sdcard android-mediarecorder

  

可能重复:
  MediaRecorder: setCamera() - error camera is not aviable

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

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

我的问题是,每当我点击按钮录制音频时,我都会收到错误消息,说“您的应用程序已被强制停止”。我已经发布了下面录制功能的代码。

编辑:我解决了原来的问题。现在,当我将recorder.stop()添加到我的代码中时,我得到一个illegalStateException。我也更新了下面的代码(唯一的变化是在startRecorder方法中)。有任何想法吗 ?

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

public class MyRecorderActivity extends Activity{

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() + "/");
  }

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

}

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。我忘了添加权限!