我将我的应用程序移植到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);
}