Android 无 EditText 情况下接受扫码枪扫描数据

2019年04月12日更新,根据评论区反馈,可能不是很好用(但是我当时用的时候就是这么实现的),可以选择性尝试

Android 无 EditText 情况下接受扫码枪扫描数据

简单无脑!
去下载个 Jar 包

要求不显示 EditText ,我使用一个 View 将 SearchView 盖起来,是可以实现页面显示时看不到输入框的,但是 SearchView 获取焦点后弹出软键盘这个很恶心。这个方式走到最后还是遇到一个bug解决不了:当前页面A跳转到下一个页面B,在B页面中,点击系统的返回键,回到A页面,A页面的 SearchView 就不会获得焦点了(手动给焦点又会弹出软键盘)。如果在 B 中点击我们自己写的 Button ,finish掉 B,回到A的时候 EditText 又能获得焦点。

如何使用

1,将 Jar 包添加进 AS

2,在 Activity 中创建成员变量 ScanGun

scanGun = new ScanGun(new ScanGun.ScanGunCallBack() {
        @Override
        public void onScanFinish(String s) {
            //这里的回调函数的参数s
            //就是扫码枪扫到的那一串字符串
            //TODO 按照你自己的逻辑处理

        }
    });

3,重写 Activityboolean onKeyDown(int keyCode, KeyEvent event) 方法

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //我们需要的内容肯定是大于6的
    //比如用户点击返回键,keyCode就是小于6的,这类的我们不需要
    if (keyCode <= 6) {
        return super.onKeyDown(keyCode, event);
    }

    return scanGun.isMaybeScanning(keyCode, event) || super.onKeyDown(keyCode, event);
}

4,上述三部无法实现的话,根据评论区小伙伴提供了如下代码(我没测试)

String barcode ="";
    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if(event.getAction()==KeyEvent.ACTION_DOWN){
            Log.e(TAG,"dispatchKeyEvent: "+event.toString());
            char pressedKey = (char) event.getUnicodeChar();
            barcode += pressedKey;
        }
        if (event.getAction()==KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            Toast.makeText(getApplicationContext(),
                    "barcode---&gt;>>" + barcode, Toast.LENGTH_LONG)
                    .show();
 
            qrEditText.setText(barcode);
            barcode="";
        }
        return super.dispatchKeyEvent(event);
    }

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值