diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt index 68b41ad..8750158 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt @@ -88,7 +88,11 @@ class QRView(private val context: Context, messenger: BinaryMessenger, private v "getCameraInfo" -> getCameraInfo(result) "getFlashInfo" -> getFlashInfo(result) "getSystemFeatures" -> getSystemFeatures(result) - "changeScanArea" -> changeScanArea(call.arguments as Double, result) + "changeScanArea" -> changeScanArea( + call.argument("cutOutSize")!!, + call.argument("cutOutBottomOffset")!!, + result, + ) else -> result.notImplemented() } } @@ -248,16 +252,29 @@ class QRView(private val context: Context, messenger: BinaryMessenger, private v } } - private fun changeScanArea(newSize: Double, result: MethodChannel.Result) { - setScanAreaSize(newSize, newSize) + private fun changeScanArea( + cutOutSize: Double, + cutOutBottomOffset: Double, + result: MethodChannel.Result + ) { + setScanAreaSize(cutOutSize, cutOutSize, cutOutBottomOffset) result.success(true) } - private fun setScanAreaSize(dpScanAreaWidth: Double, dpScanAreaHeight: Double) { - barcodeView?.setFramingRect (convertDpToPixels(dpScanAreaWidth), convertDpToPixels(dpScanAreaHeight), convertDpToPixels(150.0)) + private fun setScanAreaSize( + dpScanAreaWidth: Double, + dpScanAreaHeight: Double, + dpCutOutBottomOffset: Double + ) { + barcodeView?.setFramingRect( + convertDpToPixels(dpScanAreaWidth), + convertDpToPixels(dpScanAreaHeight), + convertDpToPixels(dpCutOutBottomOffset), + ) } - private fun convertDpToPixels(dp: Double) = (dp * context.resources.displayMetrics.density).toInt() + private fun convertDpToPixels(dp: Double) = + (dp * context.resources.displayMetrics.density).toInt() private fun hasCameraPermission(): Boolean { return permissionGranted || diff --git a/lib/src/qr_code_scanner.dart b/lib/src/qr_code_scanner.dart index fb8f799..d7f9e5c 100644 --- a/lib/src/qr_code_scanner.dart +++ b/lib/src/qr_code_scanner.dart @@ -342,13 +342,14 @@ class QRViewController { throw CameraException(e.code, e.message); } } else if (defaultTargetPlatform == TargetPlatform.android) { - final cutOutSize = overlay?.cutOutSize; - if (cutOutSize != null) { - await channel.invokeMethod( - 'changeScanArea', - cutOutSize, - ); + if (overlay == null) { + return false; } + await channel.invokeMethod('changeScanArea', { + 'cutOutSize': overlay.cutOutSize, + 'cutOutBottomOffset': overlay.cutOutBottomOffset + }); + return true; } return false; }