在Android上条码扫描暂停和恢复

时间:2016-04-01 12:22:29

标签: java android zxing

我开始在android中体验java。 我在布局上有3个EditText。 我设置了条形码扫描窗口来扫描条形码。 获取第一个条形码后,我暂停扫描并将其放在第一个EditText视图上。 然后我恢复。

问题是在第一次扫描后,相机不会再次扫描。 我尝试了很多方法,暂停然后恢复它仍然无法正常工作。 有人可以帮忙吗?

代码看起来像这样。

private CompoundBarcodeView barcodeView;
private BarcodeCallback callback = new BarcodeCallback() {

    @Override
    public void barcodeResult(BarcodeResult result) {
        String code = null;
        if (result.getText() != null) {
            code = result.getText();

            if (code != null) {
                barcodeView.pause();
                job01 = (EditText) findViewById(R.id.jobTicket01);
                if (job01.getText().toString().trim().equals("")) {
                    job01.setText(code);
                    code = null;
                }else {
                    if (job02.getText().toString().trim().equals("")) {
                        job02.setText(code);
                        code = null;
                    } else{
                }
                }
            }
        }
        barcodeView.resume();

    }

    @Override
    public void possibleResultPoints(List<ResultPoint> resultPoints) {
    }
};

提前感谢。 玩具

1 个答案:

答案 0 :(得分:0)

我只是避免在几秒钟内从扫描中解析数据。

我为数据设置了两个值,为时间戳设置了两个值。

String barcodeData = "";
Long scanTime = 0L;
        @Override
        public void receiveDetections(Detector.Detections<Barcode> detections) {
            final SparseArray<Barcode> barcodes = detections.getDetectedItems();
            if (barcodes.size() != 0) {
                txtBarcodeValue.post(new Runnable() {
                    @Override
                    public void run() {
                        if(barcodeData.equals("") && scanTime.equals(0L)){
                            barcodeData = barcodes.valueAt(0).displayValue;
                            scanTime = System.currentTimeMillis();
                            Log.d(TAG, "Barcode" + barcodeData);
                        }else if (!barcodeData.equals(barcodes.valueAt(0).displayValue)){
                            barcodeData = barcodes.valueAt(0).displayValue;
                            scanTime = System.currentTimeMillis();
                            Log.d(TAG, "New Barcode Scanned" + barcodeData);

                        }else if (barcodeData.equals(barcodes.valueAt(0).displayValue) && scanTime>(System.currentTimeMillis()-2500)) {
                            //Do Nothing
                            Log.d(TAG, "Barcode  Ignored ---------------" + barcodeData);
                        }else{
                            barcodeData ="";
                            scanTime = 0L;

                        }
                    }
                });
            }
        }