From 4d3ca50a711e72308cd98e5f4246989286283535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=81=E5=86=9C=E9=98=BF=E6=A5=A0?= Date: Tue, 16 Jun 2026 19:41:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=87=8D=E5=A4=8D=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=A4=9A=E4=B8=AA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/airnan/a2fair/ui/tokens/AddTokenBottomSheet.kt | 7 +++++++ 1 file changed, 7 insertions(+) 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) {