php 监听 扫描枪,Android监听扫描枪内容(一)

在之前的文章,我已经写过了一篇关于扫描枪数据获取通常处理的文章,

但由于该方式在实际运用中,有一个不方便的地方,那就是要想监听扫描枪的内容,我们必须在布局中隐式布局一个输入框,我最近开发的app是运行在定制版的Android设备上的,在涉及到获取扫描枪内容的时候,竟然还出现部分设备无法扫描获取数据的情况。

基于以上弱点的考虑,于是有了这篇文章。

今天涉及的知识有:

1. BarcodeScannerResolver 使用介绍

2. BarcodeScannerResolver 在 Activity 中使用

3. 效果图和项目结构图

先来波效果图

![](/contentImages/image/20210116/6WfNgioKecjhfzXSqyb.gif)

#### 一. BarcodeScannerResolver 使用介绍

`BarcodeScannerResolver`是一个监听获取扫描枪内容的类,在使用之前,我们需要初始化此类:

```

//声明对象

private var mBarcodeScannerResolver: BarcodeScannerResolver? = null

//初始化对象

mBarcodeScannerResolver = BarcodeScannerResolver()

```

在 Activity 的 onCreate 方法中监听扫描到的内容

```

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(com.kotlintest.R.layout.activity_main)

//扫描监听

mBarcodeScannerResolver!!.setScanSuccessListener(object :

BarcodeScannerResolver.OnScanSuccessListener {

override fun onScanSuccess(barcode: String) {

if (barcode.isNullOrBlank()) {

toast("=======扫描为空========")

} else {

toast("=====扫描结果为:$barcode")

}

}

})

}

```

重写`Activity`的`dispatchKeyEvent()`或`onKeyDown()`,然后在方法中调用`resolveKeyEvent()`,这里我以重写`onKeyDown()`方法为例:

```

override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {

mBarcodeScannerResolver!!.resolveKeyEvent(event)

return super.onKeyDown(keyCode, event)

}

```

然后在使用完毕后,移除`BarcodeScannerResolver`的监听:

```

override fun onDestroy() {

mBarcodeScannerResolver!!.removeScanSuccessListener()

super.onDestroy()

}

```

#### 二.BarcodeScannerResolver 在 Activity 中使用

下面给出`BarcodeScannerResolver`在`Activity`中使用示例:

```

open class MainActivity : AppCompatActivity(), View.OnClickListener {

//声明对象

private var mBarcodeScannerResolver: BarcodeScannerResolver? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(com.kotlintest.R.layout.activity_main)

initData()

setListener()

}

private fun initData() {

//初始化对象

mBarcodeScannerResolver = BarcodeScannerResolver()

}

private fun setListener() {

mBtnTest.setOnClickListener(View.OnClickListener {

// toast("=====han")

})

//扫描监听

mBarcodeScannerResolver!!.setScanSuccessListener(object :

BarcodeScannerResolver.OnScanSuccessListener {

override fun onScanSuccess(barcode: String) {

if (barcode.isNullOrBlank()) {

toast("=======扫描为空========")

} else {

toast("=====扫描结果为:$barcode")

}

}

})

}

override fun onClick(v: View) {

}

override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {

mBarcodeScannerResolver!!.resolveKeyEvent(event)

return super.onKeyDown(keyCode, event)

}

override fun onDestroy() {

mBarcodeScannerResolver!!.removeScanSuccessListener()

super.onDestroy()

}

}

```

#### 三.效果图和项目结构图

![](/contentImages/image/20210116/6WfNgioKecjhfzXSqyb.gif)

![](/contentImages/image/20210116/d3swzxPMaiKNkqJliv4.png)

ok,今天的内容就讲到这里了,谢谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值