我遵循https://github.com/wax911/vision-barcode-scanner/tree/master/barcode-reader/barcode-reader/app/src/src/main/java/java/comcom/google/-Android/gms/示例此git将视觉API实现到我的应用程序中。我可以成功地检测条形码和QR码,但面临格式的问题。以下是我的实现:
条形码初始化:
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).setBarcodeFormats(Barcode.QR_CODE |
Barcode.DATA_MATRIX | Barcode.UPC_E | Barcode.UPC_A | Barcode.CODABAR).build();
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay, autoCapture ? this : null);
barcodeDetector.setProcessor(
new MultiProcessor.Builder<>(barcodeFactory).build());
条形码检测后,我正在尝试识别被检测到的格式。BELOW是代码
public void updateList(Detector.Detections<Barcode> barcodeList) {
this.barcodeList = barcodeList;
final SparseArray<Barcode> detectedItems = barcodeList.getDetectedItems();
for (int i = 0; i < detectedItems.size(); i++) {
Log.e("Value", "------>" + detectedItems.valueAt(i));
final Barcode barcode = detectedItems.valueAt(i);
final int value = detectedItems.valueAt(i).valueFormat;
switch (value) {
case Barcode.DATA_MATRIX:
Log.i("Value", barcode.rawValue);
break;
case Barcode.QR_CODE:
Log.i("Value", barcode.rawValue);
break;
case Barcode.CODABAR:
Log.i("Value", barcode.rawValue);
break;
case Barcode.UPC_E:
Log.i("Value", barcode.rawValue);
break;
case Barcode.UPC_A:
Log.i("Value", barcode.rawValue);
break;
case Barcode.TEXT:
Log.i("Value", barcode.rawValue);
break;
}
}
final String noItems = detectedItems.toString();
}
我的问题是,每当我扫描QR代码格式结果时,结果是'codabar'而不是qrcode,同样每当我扫描条形码时,格式化的结果是'text'而不是 upc_e 或 upc_a upc_a
请帮助。
您必须将条形码格式更改为setBarcodeformats(barcode.all_formats(然后只有您可以使用所有格式。