如何使用camera2获取全屏纹理视图?

时间:2016-10-08 00:02:00

标签: android textureview android-camera2 camera2

我正在尝试全屏预览相机。我仔细阅读了camera2的文档,其中说Each Surface has to be pre-configured with an appropriate size and format (if applicable) to match the sizes and formats available from the camera device.这是我目前所理解的。如果我的理解有误,请纠正我:

  1. 纹理视图和预览缓冲区需要具有相同的宽高比。它们可以是不同的分辨率,但如果您不希望预览看起来扭曲,则宽高比必须相同。

  2. 您应该将纹理视图的缓冲区大小设置为最佳选择的预览大小。 camera2basic演示似乎用行texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()确认了这一点。

  3. 我的问题是,一旦你将纹理视图的宽高比和大小与预览相匹配,你如何缩放纹理视图以使其适合全屏?

    camera2basic演示的configureTransform方法似乎将TextureView转换为预览大小,但不是全屏。如何计算正确的比例因子以使TextureView全屏?

1 个答案:

答案 0 :(得分:0)

您可以让您的TextureView填充活动布局中的屏幕。然后,您需要调整configureTransform()方法以考虑全屏TextureView和最近方面预览大小之间的宽高比差异;基本上你需要实现通常的字母或柱子拳击效果。

当然,如果恰好有匹配的宽高比,您可以直接使用它,但这不太可能。