我已经关注了https://github.com/wax911/Vision-Barcode-Scanner/tree/master/barcode-reader/app/src/main/java/com/google/android/gms/samples这个git将 Vision api 实现到我的应用程序中。我可以成功检测条形码和二维码,但面临格式问题。以下是我的实现:
条码初始化:
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());
条形码检测后,我试图识别检测到的格式。下面是代码
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();
}
我的问题是每当我扫描二维码格式结果是“Codabar”而不是QRcode,每当我扫描条形码时格式化结果是“TEXT”而不是UPC_E或UPC_A
请帮忙。
您必须将条形码格式更改为 setBarcodeFormats(Barcode.ALL_FORMATS) 那么只有您可以使用所有格式。