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