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 02553017..4ae098df 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java @@ -175,12 +175,11 @@ public class Camera1Engine extends CameraBaseEngine implements @Override protected Task onStartBind() { LOG.i("onStartBind:", "Started"); - Object output = mPreview.getOutput(); try { - if (output instanceof SurfaceHolder) { - mCamera.setPreviewDisplay((SurfaceHolder) output); - } else if (output instanceof SurfaceTexture) { - mCamera.setPreviewTexture((SurfaceTexture) output); + if (mPreview.getOutputClass() == SurfaceHolder.class) { + mCamera.setPreviewDisplay((SurfaceHolder) mPreview.getOutput()); + } else if (mPreview.getOutputClass() == SurfaceTexture.class) { + mCamera.setPreviewTexture((SurfaceTexture) mPreview.getOutput()); } else { throw new RuntimeException("Unknown CameraPreview output class."); } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java index a315d9e3..26fe1ff8 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -480,8 +480,9 @@ public class Camera2Engine extends CameraBaseEngine implements // 1. PREVIEW // Create a preview surface with the correct size. + final Class outputClass = mPreview.getOutputClass(); final Object output = mPreview.getOutput(); - if (output instanceof SurfaceHolder) { + if (outputClass == SurfaceHolder.class) { try { // This must be called from the UI thread... Tasks.await(Tasks.call(new Callable() { @@ -497,7 +498,7 @@ public class Camera2Engine extends CameraBaseEngine implements throw new CameraException(e, CameraException.REASON_FAILED_TO_CONNECT); } mPreviewStreamSurface = ((SurfaceHolder) output).getSurface(); - } else if (output instanceof SurfaceTexture) { + } else if (outputClass == SurfaceTexture.class) { ((SurfaceTexture) output).setDefaultBufferSize( mPreviewStreamSize.getWidth(), mPreviewStreamSize.getHeight()); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java index 361113f1..c678d85b 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java @@ -95,13 +95,13 @@ public class GlCameraPreview extends FilterCameraPreview