江上一条鱼的博客

学海无涯,回头是暗

android 录音时报 MediaRecorder: setOutputFile called in an invalid state(1)

因为code是完全按照google的Demo写的,觉得比较奇怪。看描述是说setOutputFormat的时候,状态应该错乱了, 最后又看了一下google文档,原因在于google对于设定MediaRecorder是有要求的,写代码的时候应该完全按照人 家要求的设定顺序来写,具体如下: mCamera.unlock();     mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);         //1st. Initial state     mMediaRecorder = new MediaRecorder();     mMediaRecorder.setCamera(mCamera);         //2st. Initialized state     mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);     mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);         //3st. config         mMediaRecorder.setOutputFormat(mProfile.fileFormat);         mMediaRecorder.setAudioEncoder(mProfile.audioCodec);         mMediaRecorder.setVideoEncoder(mProfile.videoCodec);         mMediaRecorder.setOutputFile("/sdcard/FBVideo.3gp");         mMediaRecorder.setVideoSize(mProfile.videoFrameWidth, mProfile.videoFrameHeight);         mMediaRecorder.setVideoFrameRate(mProfile.videoFrameRate);         mMediaRecorder.setVideoEncodingBitRate(mProfile.videoBitRate);         mMediaRecorder.setAudioEncodingBitRate(mProfile.audioBitRate);         mMediaRecorder.setAudioChannels(mProfile.audioChannels);         mMediaRecorder.setAudioSamplingRate(mProfile.audioSampleRate);     mMediaRecorder.setPreviewDisplay(mHolder.getSurface());         try { mMediaRecorder.prepare(); mMediaRecorder.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

阅读更多
文章标签: android
个人分类: android
下一篇android实现波纹效果
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭