From 9c9162d2148e8a709ea65347b4f0605dc846b04f Mon Sep 17 00:00:00 2001 From: "alexander.melnikov" Date: Tue, 12 May 2020 15:31:59 +0300 Subject: [PATCH] Wrapped some crashes which connect with empty camera params --- .../cameraview/engine/Camera1Engine.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java index 95549c648..ee0ed9b91 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java @@ -100,7 +100,13 @@ public void onError(int error, Camera camera) { @NonNull @Override protected List getPreviewStreamAvailableSizes() { - List sizes = mCamera.getParameters().getSupportedPreviewSizes(); + List sizes; + try { + sizes = mCamera.getParameters().getSupportedPreviewSizes(); + } catch (Exception e) { + LOG.e("getPreviewStreamAvailableSizes:", "Failed to compute preview size. Camera params is empty"); + throw new CameraException(e, CameraException.REASON_FAILED_TO_START_PREVIEW); + } List result = new ArrayList<>(sizes.size()); for (Camera.Size size : sizes) { Size add = new Size(size.width, size.height); @@ -163,11 +169,16 @@ protected Task onStartEngine() { // Set parameters that might have been set before the camera was opened. LOG.i("onStartEngine:", "Applying default parameters."); - Camera.Parameters params = mCamera.getParameters(); - mCameraOptions = new Camera1Options(params, mCameraId, - getAngles().flip(Reference.SENSOR, Reference.VIEW)); - applyAllParameters(params); - mCamera.setParameters(params); + try { + Camera.Parameters params = mCamera.getParameters(); + mCameraOptions = new Camera1Options(params, mCameraId, + getAngles().flip(Reference.SENSOR, Reference.VIEW)); + applyAllParameters(params); + mCamera.setParameters(params); + } catch (Exception e) { + LOG.e("onStartEngine:", "Failed to connect. Problem with camera params"); + throw new CameraException(e, CameraException.REASON_FAILED_TO_CONNECT); + } mCamera.setDisplayOrientation(getAngles().offset(Reference.SENSOR, Reference.VIEW, Axis.ABSOLUTE)); // <- not allowed during preview LOG.i("onStartEngine:", "Ended");