我正在构建一个显示相机预览的Android应用程序的一部分。我想为当前设备设置正确的(最佳)预览尺寸。getPreferredPreviewSizeForVideo()是获得正确预览大小的好方法吗?
要做到这一点,我用下面的代码:
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h) {
Parameters parameters = camera.getParameters();
List<Size> sizes = parameters.getSupportedPreviewSizes();
// the list seems to be in that order, that the best quality is the first element
parameters.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
camera.setParameters(parameters);
camera.startPreview();
}
现在的问题是,如果下面的方法会更好地得到任何设备的最佳预览质量?
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h) {
Parameters parameters = camera.getParameters();
Size preferredSize = parameters.getPreferredPreviewSizeForVideo();
parameters.setPreviewSize(preferredSize.width, preferredSize.height);
camera.setParameters(parameters);
camera.startPreview();
}
目前我只有一个设备(Nexus 4),在这一个上,两种方法的结果都是一样的。但我想知道,你会建议哪种方法。
在Galaxy Nexus(4.2.2)上,getSupportedPreviewSizes()方法返回null。所以我必须使用两种方法来设置最佳预览尺寸。你会同意吗? – 2013-03-18 09:28:09
当然,如果一个给null,尝试另一个。虽然奇怪关于null。我的gNex没有这样做。使用getPreferredPreviewSizeForVideo()的htc one x上的 – Geobits 2013-03-18 14:40:40
看起来不太好。我住的是什么相机startPreview设置自己。 – 2013-05-26 20:25:18