GetSupportedPreviewSizes返回反向宽度和高度

时间:2012-06-30 19:13:21

标签: android android-camera preview

我正在使用DroidX开发使用相机预览图像的应用程序。我正在使用的代码可以在网上的许多地方找到,但是我注意到常见的方法“getBestPreviewSize(width,height,camera.parameters)”返回的是如此小的尺寸,标准的decodeYUV420SP方法因空指针异常而失败。

一些调试显示我的DroidX的supportedPreviewSizes是:

  • 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;
        }
    }

pwidthpheight来自surfaceChanged回调的宽度和高度参数。 我试过camera.setDisplayOrientation(90);在onResume()中。我还在清单中放置了方向(“肖像”) - 这些尝试的4种组合中没有一种似乎改变了这种行为。

我的想法是简单地扭转它们,但在很多层面上都感觉不对。由于这个免费提供的代码似乎已经在许多其他示例中证明了自己,我显然接近它是错误的。任何人都能对这种行为提供一些见解吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

考虑相机的正确方法是横向模式,这意味着当您在纵向模式下思考它时,宽度和高度感觉“翻转”。

getBestPreviewSize( w, h, p )函数只是getSupportedPreviewSizes() Camera.Parameters函数的包装器,因此传入的宽度和高度不会改变bestPreviewSize函数的结果。