Android的mediarecorder停止失败Android、mediarecorder

2023-09-08 00:15:43 作者:老师才是最牛的催眠师

我面临一个很奇怪的现象:有时我mediarecorder崩溃,并显示错误停止失败,有时它工作正常。有没有我的错,或者是系统的一个bug?我cant't得到什么是错的。

 私人无效STO precording(){        ticker.cancel();        ticker.purge();        recorder.stop();        startBtn.setText(开始);        recordInProcess = FALSE;        markList = locWriteTask.getMarkArray();    mCamera.lock();        recorder.release();    } 私人无效的startRecording(){         startBtn.setText(停止);         recordInProcess =真;             记录=新MediaRecorder();         mCamera.unlock();         recorder.setCamera(mCamera);         recorder.set previewDisplay(mSurfaceHolder.getSurface());         recorder.setAudioSource(MediaRecorder.AudioSource.MIC);         recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);         recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);         recorder.setAudioEn codeR(MediaRecorder.AudioEn coder.AMR_NB);         recorder.setVideoEn codeR(MediaRecorder.VideoEn coder.MPEG_4_SP);         recorder.setMaxDuration((INT)10000000);         recorder.setVideoSize(320,240);         recorder.setVideoFrameRate(15);         recorder.setOutputFile(FULL_PATH_TO_LOCAL_FILE +专柜+ MP4);         尝试{             。录音机prepare();         }赶上(例外五){             完();         }         lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,LL);         新浪体育讯北京时间=新的Timer();         locWriteTask =新WriteTimeLocationTimerTask(LL);         ticker.schedule(locWriteTask,0,DELAY);         recorder.start();    } 

解决方案

如果记录不处于记录状态,则停止可能会失败。

android.media.MediaPlayer.getCurrentPosition 这个函数是用来干嘛的 最好有个例子

请参阅 http://developer.android.com/reference/android/media/MediaRecorder.html

I've faced a very strange behavior: sometimes my mediarecorder crashes with an error "Stop failed" and sometimes it works fine. Is there my fault or it is a bug of the system? I cant't get what is wrong.

private void stopRecording(){
        ticker.cancel();
        ticker.purge();

        recorder.stop();

        startBtn.setText("Start");
        recordInProcess = false;

        markList = locWriteTask.getMarkArray();

    mCamera.lock();
        recorder.release();
    }

 private void startRecording(){

         startBtn.setText("Stop");

         recordInProcess = true;

             recorder = new MediaRecorder();

         mCamera.unlock();
         recorder.setCamera(mCamera);

         recorder.setPreviewDisplay(mSurfaceHolder.getSurface());
         recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
         recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
         recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
         recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
         recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
         recorder.setMaxDuration((int) 10000000); 
         recorder.setVideoSize(320, 240); 
         recorder.setVideoFrameRate(15); 
         recorder.setOutputFile(FULL_PATH_TO_LOCAL_FILE + counter + MP4);

         try{
             recorder.prepare();
         } catch (Exception e){
             finish();
         }

         lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

         ticker = new Timer();
         locWriteTask = new WriteTimeLocationTimerTask(ll);
         ticker.schedule(locWriteTask, 0, DELAY);   

         recorder.start();
    }

解决方案

If the recorder is not in a recording state, then the stop could fail.

See http://developer.android.com/reference/android/media/MediaRecorder.html