From 07bdeb9995839b5b32f1692f74b52a70a49342b5 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:11:28 -0700 Subject: [PATCH 01/16] Update IntentIntegrator.java --- .../integration/android/IntentIntegrator.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java index 761b430a5..0db6c4a8d 100644 --- a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java +++ b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java @@ -249,25 +249,50 @@ public class IntentIntegrator { } /** - * Initiates a scan for all known barcode types. + * Initiates a scan for all known barcode types with the default camera. * * @return the {@link AlertDialog} that was shown to the user prompting them to download the app - * if a prompt was needed, or null otherwiseo + * if a prompt was needed, or null otherwise. */ public final AlertDialog initiateScan() { - return initiateScan(ALL_CODE_TYPES); + return initiateScan(ALL_CODE_TYPES, -1); + } + + /** + * Initiates a scan for all known barcode types with the specified camera. + * + * @param cameraId camera ID of the camera to use + * @return the {@link AlertDialog} that was shown to the user prompting them to download the app + * if a prompt was needed, or null otherwise. + */ + public final AlertDialog initiateScan(int cameraId) { + return initiateScan(ALL_CODE_TYPES, cameraId); } /** - * Initiates a scan only for a certain set of barcode types, given as strings corresponding + * Initiates a scan, using the default camera, only for a certain set of barcode types, given as strings corresponding * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants * like {@link #PRODUCT_CODE_TYPES} for example. * * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for * @return the {@link AlertDialog} that was shown to the user prompting them to download the app - * if a prompt was needed, or null otherwise + * if a prompt was needed, or null otherwise. */ public final AlertDialog initiateScan(Collection desiredBarcodeFormats) { + return initiateScan(desiredBarcodeFormats, -1); + } + + /** + * Initiates a scan, using the specified camera, only for a certain set of barcode types, given as strings corresponding + * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants + * like {@link #PRODUCT_CODE_TYPES} for example. + * + * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for + * @param cameraId camera ID of the camera to use + * @return the {@link AlertDialog} that was shown to the user prompting them to download the app + * if a prompt was needed, or null otherwise + */ + public final AlertDialog initiateScan(Collection desiredBarcodeFormats, int cameraId) { Intent intentScan = new Intent(BS_PACKAGE + ".SCAN"); intentScan.addCategory(Intent.CATEGORY_DEFAULT); @@ -283,6 +308,11 @@ public class IntentIntegrator { } intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString()); } + + // check requested camera ID + if (cameraId > -1) { + intentScan.putExtra("SCAN_CAMERA_ID", cameraId); + } String targetAppPackage = findTargetAppPackage(intentScan); if (targetAppPackage == null) { From 5b957c86f82d1a5477174632369f12768b7c7abc Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:14:28 -0700 Subject: [PATCH 02/16] Added overload: open(cameraId) --- .../camera/open/OpenCameraInterface.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java index 20340cfb4..4120622d7 100644 --- a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java @@ -26,6 +26,39 @@ public final class OpenCameraInterface { private OpenCameraInterface() { } + + /** + * Opens the requested camera with {@link Camera#open(int)}, if one exists. + * + * @param cameraId camera ID of the camera to use + * @return handle to {@link Camera} that was opened + */ + public static Camera open(int cameraId) { + if (cameraId < 0) { + Log.w(TAG, "Requested invalid camera ID: " + cameraId); + return null; + } + + int numCameras = Camera.getNumberOfCameras(); + + if (numCameras == 0) { + Log.w(TAG, "No cameras!"); + return null; + } + + Camera camera; + if (cameraId < numCameras) { + Log.i(TAG, "Opening camera #" + cameraId); + camera = Camera.open(cameraId); + } else { + Log.w(TAG, "Requested camera does not exist: " + cameraId); + camera = null; + } + + return camera; + } + + /** * Opens a rear-facing camera with {@link Camera#open(int)}, if one exists, or opens camera 0. * From f18b11d7d8f81902c2e3a08fbd89f37730954bac Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:16:51 -0700 Subject: [PATCH 03/16] Added constant Intents.Scan.CAMERA_ID --- android/src/com/google/zxing/client/android/Intents.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/src/com/google/zxing/client/android/Intents.java b/android/src/com/google/zxing/client/android/Intents.java index 2bf5a9d26..34b8144ff 100755 --- a/android/src/com/google/zxing/client/android/Intents.java +++ b/android/src/com/google/zxing/client/android/Intents.java @@ -80,6 +80,13 @@ public final class Intents { * Example: "EAN_13,EAN_8,QR_CODE". This overrides {@link #MODE}. */ public static final String FORMATS = "SCAN_FORMATS"; + + /** + * Optional parameter to specify the id of the camera from which to recognize barcodes. + * Overrides the default camera that would otherwise would have been selected. + * If provided, should be an int. + */ + public static final String CAMERA_ID = "SCAN_CAMERA_ID"; /** * @see com.google.zxing.DecodeHintType#CHARACTER_SET From 1cd8388b0cd81731d2101764bb7729f18803e206 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:22:06 -0700 Subject: [PATCH 04/16] Added setManualCameraId() and amended openDriver() --- .../client/android/camera/CameraManager.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/CameraManager.java b/android/src/com/google/zxing/client/android/camera/CameraManager.java index 9349b252f..7fc273116 100755 --- a/android/src/com/google/zxing/client/android/camera/CameraManager.java +++ b/android/src/com/google/zxing/client/android/camera/CameraManager.java @@ -52,6 +52,7 @@ public final class CameraManager { private Rect framingRectInPreview; private boolean initialized; private boolean previewing; + private int requestedCameraId = -1; private int requestedFramingRectWidth; private int requestedFramingRectHeight; /** @@ -65,7 +66,7 @@ public final class CameraManager { this.configManager = new CameraConfigurationManager(context); previewCallback = new PreviewCallback(configManager); } - + /** * Opens the camera driver and initializes the hardware parameters. * @@ -75,8 +76,14 @@ public final class CameraManager { public synchronized void openDriver(SurfaceHolder holder) throws IOException { Camera theCamera = camera; if (theCamera == null) { - theCamera = OpenCameraInterface.open(); - if (theCamera == null) { + + if (requestedCameraId > -1) { + theCamera = OpenCameraInterface.open(requestedCameraId); + } else { + theCamera = OpenCameraInterface.open(); + } + + if (theCamera == null) { throw new IOException(); } camera = theCamera; @@ -265,6 +272,21 @@ public final class CameraManager { return framingRectInPreview; } + + /** + * Allows third party apps to specify the camera ID, rather than determine + * it automatically based on available cameras and their orientation. + * + * @param cameraId camera ID of the camera to use + */ + public synchronized void setManualCameraId(int cameraId) { + if (initialized) { + // FIXME throw exception? Just store for future use? Do not want to suddenly swap cameras! + } else { + requestedCameraId = cameraId; + } + } + /** * Allows third party apps to specify the scanning rectangle dimensions, rather than determine * them automatically based on screen resolution. From 6cb7147b446f979d79584ee708557f2baa56a842 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:23:42 -0700 Subject: [PATCH 05/16] Indentation wtf --- .../zxing/client/android/camera/CameraManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/CameraManager.java b/android/src/com/google/zxing/client/android/camera/CameraManager.java index 7fc273116..0ed181a70 100755 --- a/android/src/com/google/zxing/client/android/camera/CameraManager.java +++ b/android/src/com/google/zxing/client/android/camera/CameraManager.java @@ -77,13 +77,13 @@ public final class CameraManager { Camera theCamera = camera; if (theCamera == null) { - if (requestedCameraId > -1) { + if (requestedCameraId > -1) { theCamera = OpenCameraInterface.open(requestedCameraId); - } else { - theCamera = OpenCameraInterface.open(); - } + } else { + theCamera = OpenCameraInterface.open(); + } - if (theCamera == null) { + if (theCamera == null) { throw new IOException(); } camera = theCamera; From e420079ad2c8206101be6dc145e7de2a3f2b9e88 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:24:44 -0700 Subject: [PATCH 06/16] Indentation wtf --- .../zxing/client/android/camera/CameraManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/CameraManager.java b/android/src/com/google/zxing/client/android/camera/CameraManager.java index 0ed181a70..46dd5a095 100755 --- a/android/src/com/google/zxing/client/android/camera/CameraManager.java +++ b/android/src/com/google/zxing/client/android/camera/CameraManager.java @@ -280,11 +280,11 @@ public final class CameraManager { * @param cameraId camera ID of the camera to use */ public synchronized void setManualCameraId(int cameraId) { - if (initialized) { - // FIXME throw exception? Just store for future use? Do not want to suddenly swap cameras! - } else { - requestedCameraId = cameraId; - } + if (initialized) { + // FIXME throw exception? Just store for future use? Do not want to suddenly swap cameras! + } else { + requestedCameraId = cameraId; + } } /** From f80645c110f7dabbab13c526db7d3dd65bfcb80f Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:28:34 -0700 Subject: [PATCH 07/16] Amended onResume() to read CAMERA_ID from intent --- .../com/google/zxing/client/android/CaptureActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/src/com/google/zxing/client/android/CaptureActivity.java b/android/src/com/google/zxing/client/android/CaptureActivity.java index 1e7e69fbc..55ed1fd03 100755 --- a/android/src/com/google/zxing/client/android/CaptureActivity.java +++ b/android/src/com/google/zxing/client/android/CaptureActivity.java @@ -218,6 +218,13 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal cameraManager.setManualFramingRect(width, height); } } + + if (intent.hasExtra(Intents.Scan.CAMERA_ID)) { + int cameraId = intent.getIntExtra(Intents.Scan.CAMERA_ID, -1); + if (cameraId > -1) { + cameraManager.setManualCameraId(cameraId); + } + } String customPromptMessage = intent.getStringExtra(Intents.Scan.PROMPT_MESSAGE); if (customPromptMessage != null) { From 5c840a50011f98dbd30bd2d9496c7603dd6820a0 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:34:55 -0700 Subject: [PATCH 08/16] Indentation wtf --- android/src/com/google/zxing/client/android/Intents.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/com/google/zxing/client/android/Intents.java b/android/src/com/google/zxing/client/android/Intents.java index 34b8144ff..4c8f5e613 100755 --- a/android/src/com/google/zxing/client/android/Intents.java +++ b/android/src/com/google/zxing/client/android/Intents.java @@ -81,9 +81,9 @@ public final class Intents { */ public static final String FORMATS = "SCAN_FORMATS"; - /** + /** * Optional parameter to specify the id of the camera from which to recognize barcodes. - * Overrides the default camera that would otherwise would have been selected. + * Overrides the default camera that would otherwise would have been selected. * If provided, should be an int. */ public static final String CAMERA_ID = "SCAN_CAMERA_ID"; From 67217d4337cfc6d48cbcb3269dfbba6215881769 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:36:44 -0700 Subject: [PATCH 09/16] Indentation wtf --- .../android/camera/open/OpenCameraInterface.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java index 4120622d7..1126ca6d6 100644 --- a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java @@ -34,19 +34,19 @@ public final class OpenCameraInterface { * @return handle to {@link Camera} that was opened */ public static Camera open(int cameraId) { - if (cameraId < 0) { - Log.w(TAG, "Requested invalid camera ID: " + cameraId); - return null; - } + if (cameraId < 0) { + Log.w(TAG, "Requested invalid camera ID: " + cameraId); + return null; + } int numCameras = Camera.getNumberOfCameras(); - if (numCameras == 0) { + if (numCameras == 0) { Log.w(TAG, "No cameras!"); return null; } - Camera camera; + Camera camera; if (cameraId < numCameras) { Log.i(TAG, "Opening camera #" + cameraId); camera = Camera.open(cameraId); @@ -54,7 +54,7 @@ public final class OpenCameraInterface { Log.w(TAG, "Requested camera does not exist: " + cameraId); camera = null; } - + return camera; } From e19e20b5dca066aa7e27be428d8df51344b14b39 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:37:23 -0700 Subject: [PATCH 10/16] Indentation wtf --- .../client/android/camera/open/OpenCameraInterface.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java index 1126ca6d6..3285abcb8 100644 --- a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java @@ -34,10 +34,10 @@ public final class OpenCameraInterface { * @return handle to {@link Camera} that was opened */ public static Camera open(int cameraId) { - if (cameraId < 0) { - Log.w(TAG, "Requested invalid camera ID: " + cameraId); - return null; - } + if (cameraId < 0) { + Log.w(TAG, "Requested invalid camera ID: " + cameraId); + return null; + } int numCameras = Camera.getNumberOfCameras(); From 01bbe8fd53c9eee773090e64e5ab6cb5cee9159c Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 05:43:12 -0700 Subject: [PATCH 11/16] Indentation wtf --- .../zxing/integration/android/IntentIntegrator.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java index 0db6c4a8d..605985932 100644 --- a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java +++ b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java @@ -266,7 +266,7 @@ public class IntentIntegrator { * if a prompt was needed, or null otherwise. */ public final AlertDialog initiateScan(int cameraId) { - return initiateScan(ALL_CODE_TYPES, cameraId); + return initiateScan(ALL_CODE_TYPES, cameraId); } /** @@ -279,7 +279,7 @@ public class IntentIntegrator { * if a prompt was needed, or null otherwise. */ public final AlertDialog initiateScan(Collection desiredBarcodeFormats) { - return initiateScan(desiredBarcodeFormats, -1); + return initiateScan(desiredBarcodeFormats, -1); } /** @@ -309,10 +309,10 @@ public class IntentIntegrator { intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString()); } - // check requested camera ID - if (cameraId > -1) { - intentScan.putExtra("SCAN_CAMERA_ID", cameraId); - } + // check requested camera ID + if (cameraId > -1) { + intentScan.putExtra("SCAN_CAMERA_ID", cameraId); + } String targetAppPackage = findTargetAppPackage(intentScan); if (targetAppPackage == null) { From 378553986c314e27b4931851ae7880007ea882a4 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 06:05:04 -0700 Subject: [PATCH 12/16] + comments, >=0 --- .../google/zxing/integration/android/IntentIntegrator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java index 605985932..040b20600 100644 --- a/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java +++ b/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java @@ -261,7 +261,7 @@ public class IntentIntegrator { /** * Initiates a scan for all known barcode types with the specified camera. * - * @param cameraId camera ID of the camera to use + * @param cameraId camera ID of the camera to use. A negative value means "no preference". * @return the {@link AlertDialog} that was shown to the user prompting them to download the app * if a prompt was needed, or null otherwise. */ @@ -288,7 +288,7 @@ public class IntentIntegrator { * like {@link #PRODUCT_CODE_TYPES} for example. * * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for - * @param cameraId camera ID of the camera to use + * @param cameraId camera ID of the camera to use. A negative value means "no preference". * @return the {@link AlertDialog} that was shown to the user prompting them to download the app * if a prompt was needed, or null otherwise */ @@ -310,7 +310,7 @@ public class IntentIntegrator { } // check requested camera ID - if (cameraId > -1) { + if (cameraId >= 0) { intentScan.putExtra("SCAN_CAMERA_ID", cameraId); } From 2b6c4ef71b0c776ae49e80cdd2770d1f6dfd818d Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 06:11:18 -0700 Subject: [PATCH 13/16] + comments, >=0, IllegalStateException --- .../google/zxing/client/android/camera/CameraManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/CameraManager.java b/android/src/com/google/zxing/client/android/camera/CameraManager.java index 46dd5a095..b9e8b2ca7 100755 --- a/android/src/com/google/zxing/client/android/camera/CameraManager.java +++ b/android/src/com/google/zxing/client/android/camera/CameraManager.java @@ -77,7 +77,7 @@ public final class CameraManager { Camera theCamera = camera; if (theCamera == null) { - if (requestedCameraId > -1) { + if (requestedCameraId >= 0) { theCamera = OpenCameraInterface.open(requestedCameraId); } else { theCamera = OpenCameraInterface.open(); @@ -277,11 +277,11 @@ public final class CameraManager { * Allows third party apps to specify the camera ID, rather than determine * it automatically based on available cameras and their orientation. * - * @param cameraId camera ID of the camera to use + * @param cameraId camera ID of the camera to use. A negative value means "no preference". */ public synchronized void setManualCameraId(int cameraId) { if (initialized) { - // FIXME throw exception? Just store for future use? Do not want to suddenly swap cameras! + throw new IllegalStateException(); } else { requestedCameraId = cameraId; } From 0d31475707237ba1798a49a26ec5ff34a9833be8 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 06:13:03 -0700 Subject: [PATCH 14/16] >= 0 --- .../src/com/google/zxing/client/android/CaptureActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/com/google/zxing/client/android/CaptureActivity.java b/android/src/com/google/zxing/client/android/CaptureActivity.java index 55ed1fd03..d5a04b146 100755 --- a/android/src/com/google/zxing/client/android/CaptureActivity.java +++ b/android/src/com/google/zxing/client/android/CaptureActivity.java @@ -221,7 +221,7 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal if (intent.hasExtra(Intents.Scan.CAMERA_ID)) { int cameraId = intent.getIntExtra(Intents.Scan.CAMERA_ID, -1); - if (cameraId > -1) { + if (cameraId >= 0) { cameraManager.setManualCameraId(cameraId); } } From 0b6d83ed109427bed2fbca30ba55fafcdabc436e Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 06:30:29 -0700 Subject: [PATCH 15/16] Refactored open() into one method --- .../camera/open/OpenCameraInterface.java | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java index 3285abcb8..f6d33acfe 100644 --- a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java @@ -30,29 +30,46 @@ public final class OpenCameraInterface { /** * Opens the requested camera with {@link Camera#open(int)}, if one exists. * - * @param cameraId camera ID of the camera to use + * @param cameraId camera ID of the camera to use. A negative value means "no preference" * @return handle to {@link Camera} that was opened */ public static Camera open(int cameraId) { - if (cameraId < 0) { - Log.w(TAG, "Requested invalid camera ID: " + cameraId); - return null; - } - + int numCameras = Camera.getNumberOfCameras(); - if (numCameras == 0) { Log.w(TAG, "No cameras!"); return null; } - + + boolean explicitRequest = cameraId >= 0; + + if (!explicitRequest) { + // Select a camera if no explicit camera requested + int index = 0; + while (index < numCameras) { + Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); + Camera.getCameraInfo(index, cameraInfo); + if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) { + break; + } + index++; + } + + cameraId = index; + } + Camera camera; if (cameraId < numCameras) { Log.i(TAG, "Opening camera #" + cameraId); camera = Camera.open(cameraId); } else { - Log.w(TAG, "Requested camera does not exist: " + cameraId); - camera = null; + if (explicitRequest) { + Log.w(TAG, "Requested camera does not exist: " + cameraId); + camera = null; + } else { + Log.i(TAG, "No camera facing back; returning camera #0"); + camera = Camera.open(0); + } } return camera; @@ -65,33 +82,7 @@ public final class OpenCameraInterface { * @return handle to {@link Camera} that was opened */ public static Camera open() { - - int numCameras = Camera.getNumberOfCameras(); - if (numCameras == 0) { - Log.w(TAG, "No cameras!"); - return null; - } - - int index = 0; - while (index < numCameras) { - Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(index, cameraInfo); - if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) { - break; - } - index++; - } - - Camera camera; - if (index < numCameras) { - Log.i(TAG, "Opening camera #" + index); - camera = Camera.open(index); - } else { - Log.i(TAG, "No camera facing back; returning camera #0"); - camera = Camera.open(0); - } - - return camera; + return open(-1); } } From b19a9106c99c8d5409778f4ab85933f06b352343 Mon Sep 17 00:00:00 2001 From: slepmog Date: Thu, 1 May 2014 06:32:17 -0700 Subject: [PATCH 16/16] Indentation wtf --- .../client/android/camera/open/OpenCameraInterface.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java index f6d33acfe..752b13a77 100644 --- a/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ b/android/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java @@ -41,10 +41,10 @@ public final class OpenCameraInterface { return null; } - boolean explicitRequest = cameraId >= 0; + boolean explicitRequest = cameraId >= 0; - if (!explicitRequest) { - // Select a camera if no explicit camera requested + if (!explicitRequest) { + // Select a camera if no explicit camera requested int index = 0; while (index < numCameras) { Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); @@ -56,7 +56,7 @@ public final class OpenCameraInterface { } cameraId = index; - } + } Camera camera; if (cameraId < numCameras) {