Android通过扫码枪获取到商品的编码 完成自动搜索

  最近要做一个大型的Android设备的软件,是超市前台收银的设备,机器上有外接扫码枪等设备,这里的扫码枪指的是外接USB扫码枪 其本质是模拟输入法的一段输入流 通过获取焦点的EditText 可以直接获取到。

  现在说一下获取到文本之后的操作,因为要有好的交互,扫码枪获取到文本后应该完成自动搜索商品的功能,一般的扫码枪读取到数据之后 都会在显示的EditText结尾加上一个Enter的动作 (不同的扫码枪,可能会略有区别 绝大多数扫码枪都是在结尾加一个enter),我们可以以此来判断是否是扫码枪输入的,判断是否输入完毕,并以此来作为搜索的契机。

    Android通过扫码枪获取到商品的编码 完成自动搜索

 //先找到控件

etCardName = findViewById(R.id.et_card_name);
btnSure = findViewById(R.id.btn_commit);

//EditText 设置 OnKeyListener
etCardName.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View view, int i, KeyEvent keyEvent) {
        //如果keyEvent  KEYCODE_ENTER 也就是回车 就处理这个事件
        if (i == KeyEvent.KEYCODE_ENTER) {
            //异步处理Button 的点击事件
            btnSure.post(new Runnable() {
                @Override
                public void run() {
                    //设置button自动点击
                    btnSure.performClick();
                }
            });
        }
        //如果返回true 表示消耗此次事件(就是点击回车)
        return false;
    }
});

btnSure.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //处理 略
    }
});