在开发扫描枪扫码接收广播条码的时候,由于厂商如shit般的文档和对Anroid基础知识的缺失,走了一些弯路,以下是广播接收条码并使用的代码实现 :
1 : 动态注册广播
PDA扫描枪对扫码有强大支持,在原生自带的扫描服务中可以配置多种扫描模式,广播传递扫码结果是相对先进的。
首先 PAD 扫描枪在扫码解析后是会自动发送广播的,注册解析扫码结果的广播后,可以在广播类中直接获取。
再项目开发环境中,相应业务代码是写在Activity中的,目前的需求是按下扫码按键,接收广播数据并在Activity中进行相关业务实现。
在开发者模式与AndroidStudio进行调试连接后按键按键AndroidStudio的运行日志会自动打印按键的KeyCode:
D/MultiTapKeyListener: keyCode=139 mInputMode=0
最开始的想法是这么写 :
if (keyCode == 139 && event.getAction() == KeyEvent.ACTION_DOWN) {
接收数据启动业务线程
}
对扫码按键进行监听,按下后系统发送广播,广播接收器接收到扫描数据存放在静态变量中,然后在Activity中进行获取。
然而广播发送接收和Activity代码执行时异步的,Activity中获取的扫码结果为null,而广播接收器则可以接收数据。
2 : 使用接口回调
package he3.sd.adapter;
import android.content.BroadcastReceiver;
import andr