“我的营养”扫码后立即停扫设计

背景

首页点击“我的营养”后,识别弹框同时支持人脸识别和串口付款码扫码。当前扫码请求失败后会释放单次请求状态,而扫码器仍保持工作,扫码枪可能再次上报同一付款码,导致重复网络请求。

目标

实现方案

在 FaceRecognitionPop.resolvePaycode() 中保留 IdentityResolutionSession.tryStartPaycodeRequest() 作为请求门禁。门禁成功后,在更新查询状态和发起网络请求之前立即调用 stopPaycodeScanner()。

SerialPaycodeScannerController.stop() 已负责将运行状态设为关闭、移除延迟收尾任务、重置扫码帧缓冲区、关闭串口并清空监听器。因此不新增重复扫码状态、不增加超时任务,也不改扫码协议层。

网络失败回调继续显示 Toast,随后关闭弹框。关闭弹框沿用现有生命周期清理逻辑,不自动重启扫码器。

数据流

  1. 串口收到完整付款码帧。
  2. tryStartPaycodeRequest() 成功取得单次请求执行权。
  3. 立即停止扫码器并清空待处理帧。
  4. 发起付款码人员查询请求。
  5. 成功:关闭弹框,进入营养报告页。
  6. 失败:显示错误提示,关闭弹框。

测试与验证

范围外事项