我正在制作一个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()
的调试结果)。
所以,我的问题是我的方法以及我哪里做错了。
答案 0 :(得分:0)
请勿将getOutputSizes(imageFormat)与getInputSizes(imageFormat)混淆。请注意,您必须单独检查输入或输出是否支持该格式。