diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java index 28120e024..1cc5c8bcd 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java @@ -125,9 +125,7 @@ public void onPreviewError(Exception e) { }; private void requestNextPreview() { - if (cameraInstance.isOpen()) { - cameraInstance.requestPreview(previewCallback); - } + cameraInstance.requestPreview(previewCallback); } protected LuminanceSource createSource(SourceData sourceData) { diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java index d86ed1747..0deedf21a 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java @@ -25,6 +25,7 @@ public class CameraInstance { private DisplayConfiguration displayConfiguration; private boolean open = false; private boolean cameraClosed = true; + private Handler mainHandler; private CameraSettings cameraSettings = new CameraSettings(); @@ -41,6 +42,7 @@ public CameraInstance(Context context) { this.cameraThread = CameraThread.getInstance(); this.cameraManager = new CameraManager(context); this.cameraManager.setCameraSettings(cameraSettings); + this.mainHandler = new Handler(); } /** @@ -166,12 +168,20 @@ public boolean isCameraClosed() { } public void requestPreview(final PreviewCallback callback) { - validateOpen(); - - cameraThread.enqueue(new Runnable() { + mainHandler.post(new Runnable() { @Override public void run() { - cameraManager.requestPreviewFrame(callback); + if(!open) { + Log.d(TAG, "Camera is closed, not requesting preview"); + return; + } + + cameraThread.enqueue(new Runnable() { + @Override + public void run() { + cameraManager.requestPreviewFrame(callback); + } + }); } }); }