diff --git a/feature/qrcode/src/main/java/com/goms/qrcode/component/QrcodeScanPreview.kt b/feature/qrcode/src/main/java/com/goms/qrcode/component/QrcodeScanPreview.kt index 983963c7..133bfd31 100644 --- a/feature/qrcode/src/main/java/com/goms/qrcode/component/QrcodeScanPreview.kt +++ b/feature/qrcode/src/main/java/com/goms/qrcode/component/QrcodeScanPreview.kt @@ -60,12 +60,15 @@ internal fun QrcodeScanPreview( ) .build() .also { - it.setAnalyzer(cameraExecutor, QrcodeScanner { qrcodeData -> - if (isScanningEnabled) { - onQrcodeScan(qrcodeData) - isScanningEnabled = false - } - }) + it.setAnalyzer(cameraExecutor, QrcodeScanner( + qrcodeData = { qrcodeData -> + if (isScanningEnabled) { + isScanningEnabled = false + onQrcodeScan(qrcodeData) + } + }, + isScanningEnabled = { isScanningEnabled } + )) } val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA diff --git a/feature/qrcode/src/main/java/com/goms/qrcode/util/QrcodeScanner.kt b/feature/qrcode/src/main/java/com/goms/qrcode/util/QrcodeScanner.kt index e69e124e..a88fbffe 100644 --- a/feature/qrcode/src/main/java/com/goms/qrcode/util/QrcodeScanner.kt +++ b/feature/qrcode/src/main/java/com/goms/qrcode/util/QrcodeScanner.kt @@ -9,7 +9,8 @@ import com.google.mlkit.vision.barcode.common.Barcode import com.google.mlkit.vision.common.InputImage class QrcodeScanner( - val qrcodeData: (String?) -> Unit + val qrcodeData: (String?) -> Unit, + val isScanningEnabled: () -> Boolean ) : ImageAnalysis.Analyzer { private val scanner = BarcodeScanning.getClient( @@ -19,18 +20,23 @@ class QrcodeScanner( ) @androidx.annotation.OptIn(androidx.camera.core.ExperimentalGetImage::class) override fun analyze(imageProxy: ImageProxy) { + if (!isScanningEnabled()) { + imageProxy.close() + return + } + val mediaImage = imageProxy.image mediaImage?.let { val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees) scanner.process(image) .addOnSuccessListener { barcodes -> - val qrCodeValues = mutableListOf() for (barcode in barcodes) { - barcode.displayValue?.let { qrCodeValues.add(it) } - } - if (qrCodeValues.isNotEmpty()) { - qrcodeData(qrCodeValues.joinToString(", ")) + Log.d("qrcode","ing..") + barcode.displayValue?.let { + Log.d("qrcode",it) + if (it != null) qrcodeData(it) + } } } .addOnFailureListener {