如何在Camera 2 API中配置捕获大小

时间:2018-10-08 07:40:53

标签: android android-camera2

我正在制作一个android相机应用程序。我的疑问是如何将支持的分辨率作为参数传递给相机。

因此,首先我要获得所有受支持的分辨率大小:

Size[] sizes = configurationMap.getOutputSizes(ImageFormat.YUV_420_888);
Log.d("test","size:"+sizes.length);

for(Size size : sizes){
    Log.d("test", "width: " + size.getWidth() + " height" + size.getHeight());
}

然后,我使用以下尺寸之一配置输入。

InputConfiguration inputConfiguration = new InputConfiguration(1920, 1080, ImageFormat.YUV_420_888);

我正在将此输入传递给捕获会话

cameraDevice.createReprocessableCaptureSession(inputConfiguration, Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {
    @Override
    public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
        try {
            cameraCaptureSession.setRepeatingRequest(mCaptureRequestBuilder.build(), null, handler);
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
        Toast.makeText(getApplicationContext(),"Camera Preview Failed!!",Toast.LENGTH_SHORT).show();
    }
}, null);

而且,我也得到了

java.lang.IllegalArgumentException: input size 1920x1080 is not valid

错误,尽管我的手机摄像头支持此大小(根据getOutputSizes()的调试结果)。

所以,我的问题是我的方法以及我哪里做错了。

1 个答案:

答案 0 :(得分:0)

请勿将getOutputSizes(imageFormat)getInputSizes(imageFormat)混淆。请注意,您必须单独检查输入或输出是否支持该格式。