适用于Android的ZXing QR阅读器库阅读速度极慢

时间:2018-11-24 08:25:56

标签: android qr-code zxing android-vision

我正在尝试使用ZXing库(适用于Android)读取条形码。在我的应用程序中,当我单击一个按钮时,我将进入条形码阅读器活动,在该活动下,我将在ZXing阅读器的帮助下阅读代码。我的应用程序此时可以成功读取QR码,但是问题是我每次必须将相机保持一定距离/角度(不是固定不变)。因此,我自然会在阅读QR码时进行一次迷你锻炼(夸张)。另外,我尝试打开闪光灯,但是当我这样做时,阅读其中一项变得更加困难。我有一个非常快速的用户移动vison库,但是此刻它不支持闪光灯(或者我可能找不到如何打开闪光灯)。

我猜我的问题与解决方案有关。条形码是从使用分辨率非常低的热敏打印机的机器打印出来的。由于我无法更改打印机的分辨率,是否可以降低ZXing读取条形码的分辨率?

(PS我想到了较低的分辨率,因为Mobile Vision可以让我们更改分辨率,而我在读取高分辨率时遇到了问题。)

如果有办法打开闪光灯,我宁愿使用Mobile Vision。

我的条形码阅读班代码看起来像这样

private ZXingScannerView mScannerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mScannerView = new ZXingScannerView(this);
    mScannerView.setAutoFocus(true);
    //mScannerView.setFlash(true);
    setContentView(mScannerView);
}

@Override
protected void onResume() {
    super.onResume();
    mScannerView.setResultHandler(this);
    mScannerView.startCamera();
}

@Override
protected void onPause() {
    super.onPause();
    mScannerView.stopCamera();
}

@Override
public void handleResult(Result result) {

    if (result.getText() != null) {
        Intent qrCodeIntent = new Intent();
        qrCodeIntent.putExtra("barcode", result.getText());
        setResult(CommonStatusCodes.SUCCESS, qrCodeIntent);
        Log.v("Code", result.getText());
        Log.v("Code Format", result.getBarcodeFormat().toString());
        mScannerView.stopCamera();
        finish();
    }

}

qr this is the QR

2 个答案:

答案 0 :(得分:3)

如果我没记错的话,默认情况下,ZXing使用所有格式的过滤器来检查图像。我的意思是,它首先扫描例如EAN13,而不是UPC-A,依此类推,直到到达QR解析器。 to set specific decoders可能是ZXing的扫描视图。我相信它将加快扫描过程。

答案 1 :(得分:0)

通过设置以下内容,我将获得更快的体验。我需要扫描QR码。因此,我设置了 IntentIntegrator.QR_CODE

IntentIntegrator integrator = new IntentIntegrator(activity);
                    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE);
integrator.setPrompt("Scan");
integrator.setCameraId(0);
integrator.setBeepEnabled(true);
integrator.setBarcodeImageEnabled(false);
integrator.setOrientationLocked(true);
integrator.initiateScan();

我还从清单中删除了相机自动对焦。

我正在使用this库。