アプリケーションを 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);
}