Правя видеозапис с медиен рекордер.
За това използвах кода по-долу.
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();
}
}
В горния код, когато се извика слушател на грешки в медийно записващо устройство, аз пресъздавам медийно записващо устройство с друг размер на видеото, но докато правя това, получавам изключение при заключване на камерата.
как мога да разреша това?