【发布时间】:2012-06-30 19:13:20
【问题描述】:
我正在使用 DroidX 开发一个使用相机预览图像的应用。我正在使用的代码在网络上的许多地方都可以找到,但我注意到常用方法“getBestPreviewSize(width,height,camera.parameters)”返回的尺寸太小,以至于标准 decodeYUV420SP 方法因空指针异常而失败。
一些调试显示我的 DroidX 支持的PreviewSizes 是:
- 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。
当我将 camera.parameters 传递给 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 回调的宽度和高度参数。
我试过 camera.setDisplayOrientation(90);在 onResume() 中。我还在清单中添加了方向(“Portrait”) - 这些尝试的 4 种组合似乎都没有改变这种行为。
我的想法是简单地扭转它们,但在很多层面上感觉都是错误的。由于这个免费提供的代码似乎已经在许多其他示例中证明了自己,我显然在接近它是错误的。任何人都可以对这种行为提供一些见解吗?
提前致谢。
【问题讨论】:
标签: android android-camera preview