From 8afffc5fec5256482bf8377ccb6b923d0c9ba940 Mon Sep 17 00:00:00 2001 From: dongliang Date: Tue, 28 Apr 2026 21:23:16 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20NFC=E8=AF=BB=E5=88=B0=E5=8D=A1=E5=8F=B7?= =?UTF-8?q?=E5=90=8E=E7=AB=8B=E5=8D=B3=E5=81=9C=E6=AD=A2=E8=BD=AE=E8=AF=A2?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 轮询每1秒读一次sysfs,卡片还贴着时会再次读到卡号, 导致回调触发两次→API调两次→音效播放两次。 读到有效卡号后立即stopScan()+return,只触发一次回调。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt b/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt index 08edf73..05ae884 100644 --- a/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt +++ b/app/src/main/java/com/xiaoqu/watch/device/nfc/FiseNfcController.kt @@ -82,11 +82,14 @@ class FiseNfcController @Inject constructor() : NfcController { // 非空且非全零才算有效卡号(全零=无卡贴近) if (nfcId.isNotEmpty() && nfcId.any { it != '0' }) { - Timber.d("NFC控制: 读到卡号 $nfcId") + Timber.d("NFC控制: 读到卡号 $nfcId,停止轮询") + // 读到有效卡号后立即停止轮询,避免重复回调 + stopScan() // 切回主线程回调 withContext(Dispatchers.Main) { callback(nfcId) } + return@launch } } } catch (e: Exception) {