android 手持扫码设备获取扫码回调内容实践

Github地址:https://github.com/xieyuhai/qr

最近参加一个扫描设备(扫码枪扫描)的开发,内置扫码枪功能,扫描设备的二维码接收模式有三种,设置界面如下:

其中前两种的接收模式比较类似,只需要布局一个文本框即可
根据文本框的焦点设置值,这种方式有点类似模拟的键盘输入(比较不可控),当键盘弹出并且中文输入的情况,会出现二维码返回数据中的一些英文以中文的方式显示在文本框了,客户使用的时候会感觉不太友好,也不太符合需求,于是使用广播的方式来获得扫码后的回调数据。

扫码部分硬件已经实现,主要是获得扫码的回调

MainActivity.java

注册广播指定发送广播的action

public class MainActivity extends Activity implements QRListener {

private EditText qrEditText;private TextView deleteTextView;private QRReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();    initEvent();    initReceiver();}动态注册广播

private void initReceiver() {
receiver = new QRReceiver();
receiver.setListener(this);
registerReceiver(receiver, new IntentFilter(“com.barcode.sendBroadcast”));
}

private void initEvent() {deleteTextView.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            qrEditText.setText("");        }    });}private void initView() {qrEditText = (EditText) findViewById(R.id.qrEditText);

deleteTextView = (TextView) findViewById(R.id.deleteTextView);
}
//二维码回调数据设置显示
@Override
public void getQRData(String data) {
qrEditText.setText(data);
}
//
@Override
protected void onDestroy() {
if (receiver != null) {
unregisterReceiver(receiver);
receiver = null;
System.gc();
}
super.onDestroy();
}

QRReceiver.java
通过广播接收二维码的数据并将数据传递

public class QRReceiver extends BroadcastReceiver {
private QRListener listener;

public void setListener(QRListener listener) {    this.listener = listener;}@Overridepublic void onReceive(Context context, Intent intent) {    String action = intent.getAction();    if (action != null && action.startsWith("com.barcode.sendBroadcast")) {        String data = intent.getStringExtra("BARCODE");        if (listener != null) {            listener.getQRData(data);        }        Toast.makeText(context, data, Toast.LENGTH_SHORT).show();    }}

}

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Unity3D链接Android手机端数据库
  3. android MVC && MVP && MVVM分析和对比
  4. Android应用架构的一些思考-从零开始
  5. OpenGL ES 实现可视化实时音频
  6. Android将数据库保存到SD卡的实现
  7. android获取设备分辨率的新方法
  8. android 增删查完整例子
  9. Android中的广播机制(一)----- 接收广播

随机推荐

  1. Linux桌面被小孩随意攻破,程序员大神与官
  2. Windows Terminal将在下个版本提供设置GU
  3. Mac mini M1上成功启动Ubuntu
  4. CentOS联合创始人成立公司赞助Rocky Linu
  5. Objective-C 之父去世,他推动了苹果软件生
  6. 谷歌开发MicroDroid,用于虚拟机的精简版An
  7. 如何使用Movavi Video Editor Plus创建画
  8. 一个工作3年运维自我介绍话术 offer到碗
  9. 新增命令
  10. SSD可靠性影响因素、原理和解决方法