录制视频时想获取手机支持的录制视频的分辨率,使用代码如下:
ListvideoSize = camera.getParameters().getSupportedVideoSizes();Iterator itos = videoSize.iterator(); while (itos.hasNext()) { Camera.Size curSize = itos.next(); int curSupporSize = curSize.width * curSize.height; int fixPictrueSize = setFixPictureWidth * setFixPictureHeight; if (curSupporSize > fixPictrueSize) { setFixPictureWidth = curSize.width; setFixPictureHeight = curSize.height; } }mediaRecorder.setVideoSize(setFixPictureWidth, setFixPictureHeight);
出现了两次错误,一次是录制视频时调用camera.getParameters()时报parameters is empty
,这是由于在camera.unlock()之后调用了该函数,将其在unlock之前获取就ok了。
setVideoSize called in a invalid state 1
,进入setVideoSize函数中可以发现抛出异常的条件说明 /** * Sets the width and height of the video to be captured. Must be called * after setVideoSource(). Call this after setOutFormat() but before * prepare(). * * @param width the width of the video to be captured * @param height the height of the video to be captured * @throws IllegalStateException if it is called after * prepare() or before setOutputFormat() */ public native void setVideoSize(int width, int height) throws IllegalStateException;
IllegalStateException if it is called after prepare() or before setOutputFormat()
表示如果setVideoSize在prepare() 之后或者setOutputFormat()之前调用的话就会出现该异常,即是说要求setVideoSize函数在prepare()之前以及setOutputFormat()之后调用。