diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index a5f603bd..15f095cf 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -75,8 +75,9 @@ class Camera1 extends CameraController { try { setup(); } catch (Exception e) { - LOG.w("onSurfaceAvailable:", "Exception while binding camera to preview.", e); - throw new RuntimeException(e); + CameraException cameraException = new CameraUnavailableException( + "onSurfaceAvailable: Exception while binding camera to preview.", e); + mCameraCallbacks.onError(cameraException); } } }); @@ -394,7 +395,9 @@ class Camera1 extends CameraController { if (mIsCapturingVideo) { // TODO: actually any call to getParameters() could fail while recording a video. // See. https://stackoverflow.com/questions/14941625/correct-handling-of-exception-getparameters-failed-empty-parameters - throw new IllegalStateException("Can't change video quality while recording a video."); + CameraException cameraException = new CameraConfigurationFailedException("Can't change video quality while recording a video."); + mCameraCallbacks.onError(cameraException); + return; } mVideoQuality = videoQuality; @@ -606,14 +609,20 @@ class Camera1 extends CameraController { mMediaRecorder.start(); return true; } catch (Exception e) { - LOG.e("Error while starting MediaRecorder. Swallowing.", e); + CameraException cameraException = + new CapturingVideoFailedException("Error while starting MediaRecorder. " + + "Swallowing.", e); + mCameraCallbacks.onError(cameraException); mVideoFile = null; mCamera.lock(); endVideo(); return false; } } else { - throw new IllegalStateException("Can't record video while session type is picture"); + CameraException cameraException = + new CapturingVideoFailedException("Can't record video while session type is picture"); + mCameraCallbacks.onError(cameraException); + return false; } } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java index 78cc64f1..f274abc2 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java @@ -99,7 +99,7 @@ abstract class CameraController implements CameraPreview.SurfaceCallback { } catch (Exception e) { CameraException cameraException = - new CameraException("Error while starting the camera engine.", e); + new CameraUnavailableException("Error while starting the camera engine.", e); mCameraCallbacks.onError(cameraException); } } @@ -124,7 +124,7 @@ abstract class CameraController implements CameraPreview.SurfaceCallback { } catch (Exception e) { CameraException cameraException = - new CameraException("Error while stopping the camera engine.", e); + new CameraUnavailableException("Error while stopping the camera engine.", e); mCameraCallbacks.onError(cameraException); } } @@ -173,7 +173,7 @@ abstract class CameraController implements CameraPreview.SurfaceCallback { } catch (Exception e) { CameraException cameraException = - new CameraException("Error while restarting the camera engine.", e); + new CameraUnavailableException("Error while restarting the camera engine.", e); mCameraCallbacks.onError(cameraException); } } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraException.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraException.java index ec587c78..046e2dd8 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraException.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraException.java @@ -3,7 +3,11 @@ package com.otaliastudios.cameraview; /** * An object of this class describes an error that occurred during the normal runtime of the camera. */ -public class CameraException extends RuntimeException { +public abstract class CameraException extends RuntimeException { + + CameraException(String message) { + super(message); + } CameraException(String message, Throwable cause) { super(message, cause);