You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为budiyev code scanner的扫描事件添加延迟

解决budiyev:code-scanner连续扫描重复触发的问题

budiyev:code-scanner的连续扫描模式默认会快速识别同一二维码并多次触发onDecoded回调,你可以通过手动添加时间戳过滤逻辑来实现两次扫描之间的延迟,具体实现如下:

实现步骤

  • 定义成员变量记录上次扫描的时间戳,以及设定延迟阈值
  • 在onDecoded回调中先判断当前时间与上次扫描时间的间隔,小于阈值则跳过本次处理

修改后的代码示例

首先在你的Activity/Fragment中添加成员变量:

private long lastScanTimestamp = 0;
private static final long SCAN_DELAY = 2000; // 延迟2秒,可根据需求调整

然后修改onDecoded方法:

@Override
public void onDecoded(@NonNull final Result result) {
    long currentTime = System.currentTimeMillis();
    // 过滤间隔过短的重复扫描
    if (currentTime - lastScanTimestamp < SCAN_DELAY) {
        return;
    }
    lastScanTimestamp = currentTime;

    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            binding.scanCode.setText(result.getText());
            scannedQr = result.getText();
            getDetails(scannedQr);
        }
    });
}

说明

这种方式通过手动过滤重复请求实现扫描间隔控制,因为该库本身没有提供内置的扫描延迟配置。你可以根据实际场景调整SCAN_DELAY的数值,平衡扫描灵敏度和重复触发的问题。

内容的提问来源于stack exchange,提问作者Kanishka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:09:27