Android 如何读取纽兰MT90的多个条形码?
我有一个纽兰MT90条码阅读器安卓手机。我正在创建一个应用程序,希望在其中扫描两个条形码。当我运行我的代码,我按下任何按钮第一次,然后它是正常工作。同时,当我按下另一个按钮时,它将替换两个文本视图中的条形码。我如何解决这个问题Android 如何读取纽兰MT90的多个条形码?,android,qr-code,barcode,Android,Qr Code,Barcode,我有一个纽兰MT90条码阅读器安卓手机。我正在创建一个应用程序,希望在其中扫描两个条形码。当我运行我的代码,我按下任何按钮第一次,然后它是正常工作。同时,当我按下另一个按钮时,它将替换两个文本视图中的条形码。我如何解决这个问题 btnScanUid.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent = new Intent("nlsc
btnScanUid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent = new Intent("nlscan.action.SCANNER_TRIG");
intent.putExtra("SCAN_TIMEOUT", 4); // SCAN_TIMEOUT value: int, 1-9; unit: second
intent.putExtra("SCAN_TYPE ", 1); // SCAN_TYPE: read one barcodes during a scan attempt
//sendBroadcast(intent);
ReadUID(intent);
}
});
btnScanPart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("nlscan.action.SCANNER_TRIG");
intent.putExtra("SCAN_TIMEOUT", 4); // SCAN_TIMEOUT value: int, 1-9; unit: second
intent.putExtra("SCAN_TYPE ", 1); // SCAN_TYPE: read one barcodes during a scan attempt
//sendBroadcast(intent);
ReadPart(intent);
}
});
public void ReadUID(Intent intent){
sendBroadcast(intent);
registerReceiver(new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
if (intent != null) {
barcode = intent.getStringExtra("SCAN_BARCODE1");
int barcodeType = intent.getIntExtra("SCAN_BARCODE_TYPE", -1);
if(barcode!=null) {
UidBarcode.setText(barcode);
UidBarcodeType.setText(String.valueOf(barcodeType));
String text=String.valueOf(barcodeType); // Whatever you need to encode in the QR code
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE,200,200);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
UidImageView.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}else{
Toast.makeText(getApplicationContext(), "Barcode Not getting.", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "Scan Failed", Toast.LENGTH_LONG).show();
}
}
}, new IntentFilter("nlscan.action.SCANNER_RESULT"));
}
public void ReadPart(Intent intent){
sendBroadcast(intent);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
barcodePart = intent.getStringExtra("SCAN_BARCODE1");
int barcodeType = intent.getIntExtra("SCAN_BARCODE_TYPE", -1);
if(barcodePart!=null) {
PartBarcode.setText(barcodePart);
PartBarcodeType.setText(String.valueOf(barcodeType));
String text=String.valueOf(barcodeType); // Whatever you need to encode in the QR code
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE,200,200);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
PartImageView.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}else{
Toast.makeText(getApplicationContext(), "Barcode Not getting.", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "Scan Failed", Toast.LENGTH_LONG).show();
}
}
}, new IntentFilter("nlscan.action.SCANNER_RESULT"));
}
假设返回相同的
Intent
,您只需更改发出的Intent
:
Intent intent = new Intent("nlscan.action.SCANNER_TRIG");
intent.putExtra("SCAN_TIMEOUT", 4); // SCAN_TIMEOUT value: int, 1-9; unit: second
intent.putExtra("SCAN_TYPE ", 1); // SCAN_TYPE: read one barcodes during a scan attempt
// passing the resId:
intent.putExtra("SCAN_TARGET_FIELD", R.id.btnScanUid);
ReadUID(intent);
然后决定更新哪个字段。我在btnId“String btnId=intent.getStringExtra(“SCAN_TARGET_field”);”中得到空值