Camera2预览拉长了

时间:2017-01-25 22:15:11

标签: android android-camera android-camera2

在我的Moto E上,我希望我的预览是全屏的,因此我将纹理视图的尺寸设置为全屏,即540 * 960by覆盖onMeasure,但使用camera2 api,我得到的预览尺寸最接近的匹配是768 * 432具有相同的纵横比。 Google示例表明“最初,来自Camera2 API的输出流图像将从传感器的方向旋转到本机设备方向,而TextureView将默认缩放这些缓冲区以填充其视图边界。如果纵横比和相对方向是没错,这很好。“但即使在本土方向,我也会受到延伸的预测。即使我将setTransform设置为Identity矩阵,我也不知道预览是如何自动缩放以填充整个屏幕的。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题并解决了这个问题:

重新设置surfaceview参数(宽度和高度)。

ViewTreeObserver observer = mSurfaceView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
{
    @Override
    public void onGlobalLayout() 
    {
        FrameLayout.LayoutParams surfaceParams = (FrameLayout.LayoutParams) mSurfaceView.getLayoutParams();
        surfaceParams.height = screenHeight;
        surfaceParams.width = screenWidth;
        mSurfaceView.setLayoutParams(surfaceParams);

        mSurfaceView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }
});