我一直在使用Camera2,并且其中很多都基于Google Camera2示例。在不同手机上处理宽高比时,我遇到了一些问题。
我得到最大的输出尺寸并设置预览;这似乎始终是4:3的宽高比。在Pixel,Galaxy S9,Galaxy Note 8和Moto G5 +上,长宽比始终为4:3。
在Pixel,Galaxy Note 8和Moto G5 +上,流向预览的流的宽高比为4:3。在Samsung Galaxy S9上绘制的视频流的纵横比为16:9。为什么S9选择流式传输的大小与我设置的大小不同?我将预览设置为正确的大小,但是输出的不是我设置的。
我正在做的事情概述如下:
List<Size> outputSizes = Arrays.asList(streamConfigurationMap.getOutputSizes(renderingClass));
Final Size previewOutputSize = Collections.max(outputSizes, new AreaComparator());
((AspectRatioTextureView) preview).setAspectRatio(previewOutputSize.getWidth(), previewOutputSize.getHeight());
preview.getSurfaceTexture().setDefaultBufferSize(previewOutputSize.getWidth(), previewOutputSize.getHeight());
previewRequestBuilder = camera.getCaptureRequestBuilder(CameraDevice.TEMPLATE_PREVIEW);
previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
previewRequestBuilder.addTarget(previewSurface);
camera.setRepeatingRequest(previewRequestBuilder.build(), new CaptureListener());