int PreviewWidth = 0;
int PreviewHeight = 0;
parameters = mCamera.getParameters();
// 选择合适的预览尺寸
List<Camera.Size> sizeList = parameters.getSupportedPreviewSizes();
if (sizeList.size() > 1) {
Iterator<Camera.Size> itor = sizeList.iterator();
for (int i = 0; i < sizeList.size(); i++) {
Camera.Size cur = itor.next();
Log.d("alen", "width=" + cur.width + "hight=" + cur.height + "\n");
}
while (itor.hasNext()) {
Camera.Size cur = itor.next();
if (cur.width >= PreviewWidth
&& cur.height >= PreviewHeight) {
PreviewWidth = cur.width;
PreviewHeight = cur.height;
break;
}
}
}
//设置照片预览尺寸
parameters.setPreviewSize(PreviewWidth, PreviewHeight);
parameters.setJpegQuality(85);//设置照片质量 1-100
parameters.setPictureFormat(PixelFormat.JPEG);//设置照片输出的格式
//设置照片尺寸
parameters.setPictureSize(PreviewWidth, PreviewHeight);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1连续对焦
mCamera.setParameters(parameters);
mCamera.startPreview();
SAFECAMERASTATUS = true;//相机安全
mCamera.cancelAutoFocus();// 2如果要实现连续的自动对焦,这一句必须加上
设置相机拍照参数的时候遇到了RuntimeException: setParameters failed错误,定位到问题是获得的PreviewWidth和PreviewHeight为0,照片预览尺寸和照片尺寸都被设置为0了,所以会报错。
解决方法一:把照片预览尺寸和照片尺寸设置为固定的值 小米6PreviewWidth=1280 PreviewHeight=720
小米3PreviewWidth=800 PreviewHeight=600 其他机型未知
解决方法二:把setPreviewSize和setPictureSize这两个方法注释掉
目前没有找到更好的解决方法,求高手赐教!