我的应用中有以下代码:
camera = Camera.open(CameraInfo.CAMERA_FACING_FRONT);
Camera.Parameters setting_param = camera.getParameters();
setting_param.setPreviewSize(128,128);
camera.setParameters(setting_param);
Camera.Parameters read_param = camera.getParameters();
Camera.Size sz = read_param.getPreviewSize();
代码在运行Android 3.1的galaxy tab 10.1上完全按预期工作。但在运行4.1.2的My Galaxy S II手机上,预览的宽度和高度,即sz.width和sz.height分别为640和480!这是4.1.2中的错误,还是我的错误的结果,我在3.1中侥幸逃脱并且没有在4.1.2中逃脱?
答案 0 :(得分:6)
在设置预览尺寸之前,您应该检查是否支持该预览尺寸。 您在Camera上有一个名为getSupportedPreviewSizes的方法,它会返回一个支持的预览大小列表。
答案 1 :(得分:4)
Mick,在设置之前,您应该检查相机是否支持预览尺寸。更改你的onSurfaceChanged方法,如下所示。
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters mParameters = mCamera.getParameters();
Camera.Size bestSize = null;
List<Camera.Size> sizeList = mCamera.getParameters().getSupportedPreviewSizes();
bestSize = sizeList.get(0);
for(int i = 1; i < sizeList.size(); i++){
if((sizeList.get(i).width * sizeList.get(i).height) >
(bestSize.width * bestSize.height)){
bestSize = sizeList.get(i);
}
}
mParameters.setPreviewSize(bestSize.width, bestSize.height);
mCamera.setParameters(mParameters);
mCamera.startPreview();
//any other code ....
}