【发布时间】:2018-03-09 17:41:25
【问题描述】:
我正在尝试创建一个简单的录像机,这是我的代码,以便我调用它:
protected boolean prepareForVideoRecording() {
try {
mCamera.unlock();
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mMediaRecorder.setOutputFile(getOutputMediaFile1(MEDIA_TYPE_VIDEO).toString());
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
try {
mMediaRecorder.prepare();
Toast.makeText(getContextOfMainFragment(), "Prepared!", Toast.LENGTH_SHORT).show();
} catch (IllegalStateException e) {
Log.e(TAG,"IllegalStateException when preparing MediaRecorder "+ e.getMessage());
e.getStackTrace();
releaseMediaRecorder();
return false;
} catch (IOException e) {
Log.e(TAG,"IOException when preparing MediaRecorder "+ e.getMessage());
e.getStackTrace();
releaseMediaRecorder();
return false;
}
return true;
} catch (Exception e) {
return false;
}
}
请忽略 toast 消息,我有时会使用它们进行调试。接下来,唯一剩下的就是调用 mMediaRecorder.start() 我通过单击按钮执行此操作。事实上,我添加了 2 个按钮,第一个按钮调用上面的方法,另一个按钮调用 start。我确信这个相同的代码曾经对我有用,我不知道为什么它不再工作了。
我在我的 mMediaRecorder.start() 调用周围添加了一个尝试捕获,带有 IllegalStateException,这就是我得到的:
04-09 10:38:18.350: E/MediaRecorder(29678): start failed: -38
04-09 10:38:18.350: E/VideoTut_Main(29678): Illegal state exception with MediaRecorder.Start() : null
【问题讨论】:
-
我有一个更新:我试图将其安装在 Nexus 5 上。出于好奇,我尝试将其安装在三星 Galaxy s3 上,它运行良好。我不确定为什么它不能在 Nexus 5 上运行。我还尝试卸载并再次安装它。还是不行。 :(
标签: android illegalstateexception mediarecorder android-mediarecorder