diff --git a/app/src/main/java/cn/airnan/a2fair/ui/tokens/AddTokenBottomSheet.kt b/app/src/main/java/cn/airnan/a2fair/ui/tokens/AddTokenBottomSheet.kt index 729eff8..d9ee300 100644 --- a/app/src/main/java/cn/airnan/a2fair/ui/tokens/AddTokenBottomSheet.kt +++ b/app/src/main/java/cn/airnan/a2fair/ui/tokens/AddTokenBottomSheet.kt @@ -373,8 +373,14 @@ fun CameraPreview(onScan: (String) -> Unit) { class ZxingAnalyzer(private val onScan: (String) -> Unit) : ImageAnalysis.Analyzer { private val reader = MultiFormatReader() + @Volatile + private var scanned = false override fun analyze(image: ImageProxy) { + if (scanned) { + image.close() + return + } val buffer = image.planes[0].buffer val data = ByteArray(buffer.capacity()) buffer.get(data) @@ -395,6 +401,7 @@ class ZxingAnalyzer(private val onScan: (String) -> Unit) : ImageAnalysis.Analyz val result = reader.decode(binaryBitmap) val text = result.text if (text.startsWith("otpauth://")) { + scanned = true onScan(text) } } catch (e: NotFoundException) {