StreamConfigurationMap

StreamConfigurationMap

我已经在android棒棒糖上测试了新的camera2 api。我要获取支持的预览大小:

StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class);

三星Galaxy Tab S的最大预览尺寸为1440x1080px,分辨率为2560x1600px。所以我的预览大小是1440x1080px,而纹理视图的表面大小是2560x1600px,所以图像失真。
我测试了被弃用的旧相机api。
Camera.Parameters parameters =  camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();

上面的代码返回32种预览大小的组合,例如:2560x19201920x10801080x19202560x2560等。在这种情况下,我可以选择最佳大小并显示正确的图像。
我不知道如何强制新的api获得最佳大小。我知道解决方案是缩小显示预览的视图的大小,但是内置的相机应用程序可以在全屏模式下正常工作。
提前感谢所有的建议!

最佳答案

代替

Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class);


Size[] sizes = streamConfigurationMap.getOutputSizes(ImageFormat.JPEG)

08-18 12:53