如何为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
相关产品推荐
相关产品推荐

