Zxing lib支持Android中的条形码扫描

时间:2014-02-03 08:26:20

标签: android barcode zxing

使用Zxing lib,我能够有效地扫描QR码,我无法扫描条形码扫描。我做了很多RnD和不同的代码测试,但没有工作。

所以,我的问题 -

  1. 是Zxing libs支持Android中的条码扫描吗?

  2. 如果支持,我应该使用不同的zxing lib或同一个lib(QR_Code)lib吗?

  3. 请指点/建议。

    Zxing lib支持的代码 -

    ZXING支持的条形码格式列表

    1.  QR_CODE
    2.  DATA_MATRIX
    3.  UPC_E
    4.  UPC_A
    5.  EAN_8
    6.  EAN_13
    7.  UPC_EAN_EXTENSION
    8.  CODE_128
    9.  CODE_39
    

    10。 CODE_93    11. CODABAR    12. ITF    13. RSS14    14. PDF417    15. RSS_EXPANDED

    使用过的代码快照 -

    选项1 -

    Intent objIntent = new Intent("com.google.zxing.client.android.SCAN"); 
                objIntent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
                objIntent.putExtra("SCAN_FORMATS", "CODABAR"); 
                startActivityForResult(objIntent, 0);
    

    选项2 -

      Intent objIntent = new Intent("com.google.zxing.client.android.SCAN"); 
                objIntent.putExtra("SCAN_MODE", "PRODUCT_MODE""); 
                objIntent.putExtra("SCAN_FORMATS", "UPC_A"); 
                startActivityForResult(objIntent, 0);
    

    选项3 -

      Intent objIntent = new Intent("com.google.zxing.client.android.SCAN"); 
                objIntent.putExtra("SCAN_MODE", "PRODUCT_MODE""); 
                objIntent.putExtra("SCAN_FORMATS", "UPC_A"); 
                startActivityForResult(objIntent, 0);
    

    选项4 -

          Intent objIntent = new Intent("com.google.zxing.client.android.SCAN"); 
                objIntent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
                startActivityForResult(objIntent, 0);
    

    我有兴趣只扫描条形码而不是QR码 -

    Barcode sample image

3 个答案:

答案 0 :(得分:1)

是的,ZXing lib支持常规条形码。

答案 1 :(得分:0)

为什么不选择Zbar库,这似乎更容易实现。 是的但是,如果您想要像Zxing的定制相机扫描仪一样,您必须自定义扫描仪相机的表面,否则它将满足您的要求。

Here is the link for library with a sample too.

如果您查看样本,可以看到有两个功能,一个用于扫描qr和条形码。和其他仅用于qr代码。

// This will scan both
 public void launchScanner(View v) {
        if (isCameraAvailable()) {
            Intent intent = new Intent(this, ZBarScannerActivity.class);
            startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
        } else {
            Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
        }
    }


//this will scan only qr code
    public void launchQRScanner(View v) {
        if (isCameraAvailable()) {
            Intent intent = new Intent(this, ZBarScannerActivity.class);
            intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});
            startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
        } else {
            Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
        }
    }

根据您的需要使用。

Zbar支持以下条形码:

PARTIAL,EAN8,UPCEISBN10,UPCA,EAN13,ISBN13,I25,DATABAR,DATABAR_EXP,CODABAR,CODE39 PDF417,QRCODE,CODE93,CODE128。

答案 2 :(得分:0)

ZXing支持多种条形码格式:UPC_A,UPC_E,EAN_8,EAN_13,CODE_39,CODE_93,CODE_128等。

使用ZXing的最简单方法是使用它们提供的android集成,它也是the way they want people to use it。我有一个example project on github,它显示了如何以这种方式使用ZXing。基本上你需要做这样的事情:

private void scanBarcode() {
    IntentIntegrator integrator = new IntentIntegrator(getActivity());
    Collection<String> BARCODE_TYPES =
            Collections.unmodifiableCollection(Arrays.asList("UPC_A", "EAN_8", "EAN_13"));
    integrator.initiateScan(BARCODE_TYPES);
}

如果您想直接使用它,那么最好结帐their code from github。我记得你想要启动的是 CaptureActivity

值得结账ZBar