android 扫码设备获取扫码回调内容实践
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(); }}
}
更多相关文章
- 一句话锁定MySQL数据占用元凶
- Unity3D链接Android手机端数据库
- android MVC && MVP && MVVM分析和对比
- Android应用架构的一些思考-从零开始
- OpenGL ES 实现可视化实时音频
- Android将数据库保存到SD卡的实现
- android获取设备分辨率的新方法
- android 增删查完整例子
- Android中的广播机制(一)----- 接收广播