我正在使用DroidX开发一款应用程序,它使用相机预览图像。我在网上找到了很多代码,但我注意到常见的方法“getBestPreviewSize(width,height,camera.parameters)”返回的尺寸非常小,以至于标准的decodeYUV420SP方法会出现空指针异常。
一些调试显示,我的DroidX支持的预览大小为:
- 144h x 176w - 240h x 320w - 288h x 352w - 480h x 640w - 480h x 720w - 448h x 800w - 720h x 1280w
请注意,高度和宽度的值给出了横向透视图。这不随相机方向而变化。传递给
当我将相机参数传递给
一些调试显示,我的DroidX支持的预览大小为:
- 144h x 176w - 240h x 320w - 288h x 352w - 480h x 640w - 480h x 720w - 448h x 800w - 720h x 1280w
请注意,高度和宽度的值给出了横向透视图。这不随相机方向而变化。传递给
getBestSupportedPreviewSizes
的表面的宽度和高度为480w x 778h。当我将相机参数传递给
getBestSupportedPreviewSizes()
时,它返回一个288 x 352的大小。以下是调用代码-如果格式有误,我很抱歉: if (!cameraConfigured) {
Camera.Parameters parameters=camera.getParameters();
Camera.Size size=getBestPreviewSize(pwidth, pheight, parameters);
if (size!=null) {
parameters.setPreviewSize(size.width, size.height);
camera.setParameters(parameters);
cameraConfigured=true;
}
}
pwidth
和 pheight
是从 surfaceChanged
回调的宽度和高度参数中获取的。我已经尝试在 onResume() 中使用 camera.setDisplayOrientation(90);,还将 orientation("Portrait") 放入清单文件中 - 这4种尝试的组合似乎都没有改变这种行为。
我的想法是简单地反转它们,但在很多方面都感觉不对。由于这个免费可用的代码在许多其他示例中已经证明了自己,我显然是在错误的方法上接近它。有谁能解释一下这种行为吗?
提前感谢。