我正在尝试使用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();
}
}
答案 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库。