Android Camera2 Output sizes

2019-03-27 20:36发布

问题:

I have tested new Camera2 API on Android Lollipop. I want to fetch supported preview size:

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

and the maximum preview size is 1440x1080px on Samsung Galaxy Tab S that has 2560x1600px resolution. So my previewSize is 1440x1080px and TextureView surface size is 2560x1600px so image is distorted.

I tested old Camera API that is deprecated.

Camera.Parameters parameters =  camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();

And the code above returns 32 varius combinations of preview size such as: 2560x1920, 1920x1080, 1080x1920, 2560x2560 etc. In that case I am able to choose optimal size and display correct image.

I do not know how to force new API to get optimal size. I know that the solution is to resize down view that displays preview, but built-in camera app works in fullscreen mode correctly. Thanks in advance for all suggestions!

回答1:

replace

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

to

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