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

1 篇文章 0 订阅
1 篇文章 0 订阅

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;
@Override
protected 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;
}

@Override
public 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();
    }
}

}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值