我在Android Lollipop上测试了新的Camera2 API。我想获取支持的预览尺寸:
StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class);
三星Galaxy Tab S的最大预览尺寸为1440x1080像素,分辨率为2560x1600像素。因此,我的预览尺寸为1440x1080像素,TextureView表面尺寸为2560x1600像素,因此图像被扭曲了。
我测试了已弃用的旧相机API。
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
上面的代码返回32个不同的预览大小组合,例如:2560x1920
,1920x1080
,1080x1920
,2560x2560
等。在这种情况下,我可以选择最佳大小并显示正确的图像。
我不知道如何强制新的API获取最佳大小。我知道解决方案是调整显示预览的视图大小,但内置相机应用程序可以在全屏模式下正常工作。 感谢您提前提供所有建议!
TextureView
具有与相机预览图像相同的纵横比,可以使用负边距将其在一个轴上调整为大于屏幕尺寸。 - CommonsWare