1

我正在将我的应用程序移植到 Camera2 API。对于预览,我使用 Textureview 以方形格式显示我的预览。

我正在使用下面的逻辑来缩放我的相机预览 - 这在旧相机 API 上运行良好 - 并缩放预览而不在纵向模式下拉伸。但是这个逻辑在三星 S4 上使用前置摄像头上的 Camera2 API 不起作用。在后置摄像头上它工作正常,这有点奇怪。

我在 Nexus 5x 上尝试了相同的代码,并且在两台相机上都可以正常工作。有没有人有同样的问题或知道如何解决这个问题?

public void updateTextureViewSize(int viewWidth, int viewHeight, int previewWidth, int previewHeight, AutoFitTextureView textureView) {

    int scaledHeight;
    int scaledWidth;
    float scaleX = 1.0f;
    float scaleY = 1.0f;
    float ratioCameraPreview = (float) previewHeight / previewWidth;
    float ratioTextureView = viewWidth / viewHeight;

    if (ratioCameraPreview > ratioTextureView) {
        scaledWidth = viewWidth;
        float result = (float) previewHeight / previewWidth;
        result = result * (float) viewWidth;
        scaledHeight = (int) result;
        scaleX = 1;
        scaleY = (float) scaledHeight / scaledWidth;
    }

    Matrix matrix = new Matrix();
    matrix.setScale(scaleX, scaleY, viewWidth / 2, viewWidth / 2);
    textureView.setTransform(matrix);
}
4

0 回答 0