我正在使用媒体记录器进行视频录制。
为此,我使用了下面的代码。
private void prepareMediaRecorder(boolean vsize) {
mrec = new MediaRecorder();
mrec.setOnErrorListener(new OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
// TODO Auto-generated method stub
if (extra == -1007)
{
prepareMediaRecorder(false);
}
else
{
unableToRecord();
}
}
});
camera.lock();
camera.unlock();
mrec.setCamera(camera);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
if (vsize)
mrec.setVideoSize(getMaxSupportedVideoSize().width,
getMaxSupportedVideoSize().height);
else
mrec.setVideoSize(640, 480);
mrec.setOutputFile(path + filename);
mrec.setMaxDuration(30000);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
if (!onlyback
&& currentapiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
if (open_camera == 1)
mrec.setOrientationHint(270);
else
mrec.setOrientationHint(90);
} else if (currentapiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) {
mrec.setOrientationHint(90);
}
try {
mrec.prepare();
mrec.start();
} catch (Exception e) {
e.printStackTrace();
}
}
在上面的代码中,当调用媒体记录器错误侦听器时,我正在重新创建具有其他视频大小的媒体记录器,但是在执行此操作时,我得到了相机锁定异常。
我该如何解决这个问题?