1

アプリケーションを Camera2 API に移植しています。プレビューでは、Textureview を使用してプレビューを正方形形式で表示しています。

以下のロジックを使用して、カメラ プレビューをスケーリングします (これは古いカメラ API で正常に動作します)。ポートレート モードでストレッチせずにプレビューをスケーリングします。ただし、このロジックは、前面カメラで Camera2 API を使用する Samsung 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);
}
4

0 に答える 0