【问题标题】:Zxing lib supports Barcode scanning in AndroidZxing lib 支持 Android 中的条码扫描
【发布时间】:2014-02-03 21:01:09
【问题描述】:

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

所以,我的问题 -

  1. Zxing 库是否支持 Android 中的条码扫描?

  2. 如果支持,我应该使用不同的 zxing 库还是使用相同的库(QR_Code)库?

请提供任何指针/建议。

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. 科达巴 12. 国际乒联 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);

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

【问题讨论】:

  • 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
  • 你解决了你的问题?

标签: android barcode zxing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    Here is the link for library with a sample too.

    如果您查看示例,您会看到有两个功能,一个是扫描二维码和条形码。其他仅适用于二维码。

    // 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。

    【讨论】:

      【解决方案3】:

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

      使用 ZXing 最简单的方法是使用他们提供的 android-integration,它也是 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 也值得一试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-25
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多