解决PDA等扫描设备短时间多次重复扫描的问题

本文介绍了如何通过设置500毫秒延迟来解决PDA设备扫描头和EditText控件可能导致的短时间内重复识别问题,提供了一段Java代码示例,展示了如何在getScanCode方法中过滤掉重复条码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  现象描述:

  1.PDA等设备扫描头有时候会过于灵敏,导致短时间内重复识别。

  2. EditText 的 actionUnspecified  属性,回车之后,短时间内会相应两次。导致数据异常。(暂不清楚是设备导致的,还是控件导致的)

  处理思路:

  1.首次扫描到的条码直接返回,不做处理

  2.500ms内,重复扫描到的条码舍弃,超过500ms扫描到的条码,依旧读取

  思路就是这么简单,在获取条码之后调用此方法,就可以实现500ms内重复条码的过滤了。

  具体的处理方式如下图所示:

public class CommonUtil {
    private static long exitTime = 0;
    //解决重复扫描定义的变量
    private static String tempCode = "";

    /**
     * 获取实际的code
     *
     * @param barcode
     * @return
     */
    public static String getScanCode(String barcode) {
        if (!TextUtils.isEmpty(barcode)) {
            if ((System.currentTimeMillis() - exitTime) < 500) {
                if (tempCode.equals(barcode.trim())) {
                    Log.d("scanResult+不做处理", barcode.trim());
//                            CommonUtil.showToast(getApplicationContext(),"aaa");
                    //不做处理
                    return "";
                } else {
                    //条码不一样,可以处理
                    tempCode = barcode.trim();
                    Log.d("scanResult", barcode.trim());
                }
                exitTime = System.currentTimeMillis();
            } else {
                tempCode = barcode.trim();
                Log.d("scanResult", barcode.trim());
                exitTime = System.currentTimeMillis();
            }
        }
        return  tempCode;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值