首页 文章

Camera2预览拉长了

提问于
浏览
0

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

1 回答

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

相关问题