ZXing QR reader 库 Android 阅读速度非常慢
ZXing QR reader library for Android reading painfully slow
我正在尝试借助 android 的 ZXing 库来读取条码。在我的应用程序中,当我单击一个按钮时,我会被带到条形码 reader activity,在那里我可以在 ZXing reader 的帮助下阅读代码。此时我的应用程序可以成功读取 QR 码,但问题是我每次都必须将相机保持在某个 distance/angle(顺便说一句,不是固定的)。所以我自然而然地在阅读二维码时进行了一次小型锻炼(夸张)。此外,我尝试打开闪光灯,但当我这样做时,阅读一个任务变得更加困难。我有用户移动视觉库,速度非常快,但目前不支持闪光灯(或者我可能还没有找到如何打开闪光灯)。
我猜我的问题与分辨率有关。条形码是从使用分辨率非常低的热敏打印机的机器打印的。由于我无法更改打印机的分辨率,有没有办法降低ZXing读取条码的分辨率?
(PS 由于 Mobile Vision 让我们改变了分辨率,我得到了较低分辨率的想法,而我在读取较高分辨率时遇到了问题)。
如果有办法打开闪光灯,我更愿意使用 Mobile Vision。
我的条形码读取代码 class 看起来像这样
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();
}
}
二维码
如果我没记错的话,默认情况下,ZXing 使用所有格式的过滤器来检查图像。我的意思是,它首先扫描是否是 EAN13,而不是 UPC-A,依此类推,直到到达 QR 解析器。
ZXing的扫描视图可以to set specific decoders。我相信它会加快扫描过程。
我通过设置以下内容获得了更快的体验。我需要二维码扫描。所以,我设置 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();
我还从清单中删除了相机自动对焦。
N.B。我正在使用 this 库。
我正在尝试借助 android 的 ZXing 库来读取条码。在我的应用程序中,当我单击一个按钮时,我会被带到条形码 reader activity,在那里我可以在 ZXing reader 的帮助下阅读代码。此时我的应用程序可以成功读取 QR 码,但问题是我每次都必须将相机保持在某个 distance/angle(顺便说一句,不是固定的)。所以我自然而然地在阅读二维码时进行了一次小型锻炼(夸张)。此外,我尝试打开闪光灯,但当我这样做时,阅读一个任务变得更加困难。我有用户移动视觉库,速度非常快,但目前不支持闪光灯(或者我可能还没有找到如何打开闪光灯)。
我猜我的问题与分辨率有关。条形码是从使用分辨率非常低的热敏打印机的机器打印的。由于我无法更改打印机的分辨率,有没有办法降低ZXing读取条码的分辨率?
(PS 由于 Mobile Vision 让我们改变了分辨率,我得到了较低分辨率的想法,而我在读取较高分辨率时遇到了问题)。
如果有办法打开闪光灯,我更愿意使用 Mobile Vision。
我的条形码读取代码 class 看起来像这样
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();
}
}
二维码
如果我没记错的话,默认情况下,ZXing 使用所有格式的过滤器来检查图像。我的意思是,它首先扫描是否是 EAN13,而不是 UPC-A,依此类推,直到到达 QR 解析器。 ZXing的扫描视图可以to set specific decoders。我相信它会加快扫描过程。
我通过设置以下内容获得了更快的体验。我需要二维码扫描。所以,我设置 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();
我还从清单中删除了相机自动对焦。
N.B。我正在使用 this 库。