使用Camera2 Android API在Front上水平预览拉伸

时间:2016-01-04 18:20:48

标签: android android-camera2

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

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

我在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);
}

0 个答案:

没有答案