【问题标题】:ZXing barcode scanner to read Brazilian barcodeZXing条码扫描仪读取巴西条码
【发布时间】:2014-12-11 22:17:17
【问题描述】:

我知道论坛中有另一个帖子与此主题相同,但我无法解决我的问题,我已经尝试了所有方法,但它不起作用。

事情是这样的,我试图让 ZXing 的barcodeScanner 在我正在开发的 android 中读取 interleaved 2 of 5 的条形码格式,但它不起作用。扫描仪保持屏幕上的红灯,但根本不读取条形码。

我正在使用“android-integration-2.3.0.jar”,从这里下载http://mvnrepository.com/artifact/com.google.zxing/android-integration/2.3.0, 但它根本不读取我的条形码。我确定问题不在于我的条码,它是这里一家著名银行的官方条码。 这是我遵循的教程: http://techiedreams.com/android-zxing-barcode-scanner-integration/

无论如何,让我给你看一些代码:这就是我调用 barCodeScanner 的方式

ImageView ivBarCode = (ImageView) findViewById(R.id.ivPagamentosCodBar); ivBarCode.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_FORMATS", "AZTEC,CODABAR,CODE_39,CODE_93,CODE_128,DATA_MATRIX,EAN_8,EAN_13,ITF,MAXICODE,PDF_417,QR_CODE,RSS_14,RSS_EXPANDED,UPC_A,UPC_E,UPC_EAN_EXTENSION");
            startActivityForResult(intent, 0);
        }
    });

这就是我阅读信息的方式: 或者至少,认为它应该可以工作:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//      if (data == null) {
//          ringProgressDialog.dismiss();
//          return;
//      }else 
        if (requestCode==IntentIntegrator.REQUEST_CODE)
        {
            IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if (scanResult != null)
            {
               String codBar = scanResult.toString();
               Toast.makeText(PagamentosContas.this, codBar, Toast.LENGTH_LONG).show();
               Log.e("Código de Barras",codBar);
               Log.e("Código de Barras",codBar);
               Log.e("Código de Barras",codBar);

            }
            else
            {
                // else continue with any other code you need in the method
               Toast.makeText(PagamentosContas.this, "scanResult is null.",     Toast.LENGTH_LONG).show();
            }
    }
//      else{
//      String valor = data.getStringExtra("valor");
//      valor = valor.replace(",", ".");
//
//      pagamento.setValorConta(valor);
//      ThreadPagamentosContas thread1 = new ThreadPagamentosContas();
//      thread1.start();
//      ringProgressDialog.dismiss();
//      }

    }

它根本不读取任何条形码,或者当它读取时,做错了,由 EAN3 获取 5 中的交错 2...

以下是官方条形码的示例: https://drive.google.com/file/d/0ByQMtFUGwDRBWnZObkFBcDR1RVk/edit

提前致谢。 这让我发疯了好几个月......

【问题讨论】:

  • 您是否尝试过其他条码仅用于测试?您确定来自相机的图像具有足够的分辨率和对比度吗?我会拍几张条形码,将它们保存为图像,然后尝试将它们输入 zxing 命令行,看看它们是否因质量问题而失败。
  • 我已经尝试了很多带有好相机的设备,甚至是差相机。劣质的摄像头根本无法读取,配备好的摄像头的设备读取条形码全错,甚至是格式类型。已经尝试过,ZBar、FixBoletoFree、SDTBarcodeSDKForAndroid,然后都没有实际工作。我认为也许我做错了什么,但我遵循了所有这些工具的分步指南。没有工作。

标签: java android integration barcode zxing


【解决方案1】:

我发现了问题! 本教程中的所有内容都是正确的并且工作正常。 问题出在我用于测试的所有设备的摄像头上。

上周我有了更好的智能手机,拥有更好的资源,而且它可以很好地读取条形码。 平板电脑通常在相机硬件中没有自动对焦工具,因此无法正确对焦条码。

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 2012-05-21
    • 2017-09-30
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多