如何从Newland MT90读取多个条形码?

问题描述 投票:0回答:1

我有一个Newland MT90条形码阅读器android手机。我正在创建一个要扫描两个条形码的应用程序。当我运行我的代码并第一次按下任何按钮时,它就可以正常工作。同时,当我按下另一个按钮时,它将替换两个TextView中的条形码。我该如何解决?

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"));
}
android qr-code barcode
1个回答
0
投票

假设返回相同的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);

然后确定.onReceive()要更新哪个字段。

© www.soinside.com 2019 - 2024. All rights reserved.