【问题标题】:Decoding bitmap using Zxing library in android在android中使用Zxing库解码位图
【发布时间】:2013-01-26 07:11:09
【问题描述】:

我正在集成 zxing 库以将条形码扫描到我的 android 应用程序。我在我的应用程序本地执行此操作,如

中所示

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

但在运行应用程序时,它要求我安装条形码扫描仪应用程序。不安装应用就不能实现吗?

我已经对如何实现这一目标进行了大量研究,但我最终无法获得令人满意的结果。

我正在尝试使用这段代码来做到这一点,

      IntentIntegrator integrator = new IntentIntegrator(TestActivity.this);
      integrator.addExtra("SCAN_WIDTH", 800);
      integrator.addExtra("SCAN_HEIGHT", 200);
      integrator.addExtra("RESULT_DISPLAY_DURATION_MS", 3000L);
      integrator.addExtra("PROMPT_MESSAGE", "Custom prompt to scan a product");
      integrator.initiateScan(IntentIntegrator.PRODUCT_CODE_TYPES);

请帮帮我

更新:

我现在正在使用不同的 zxing 技术进行扫描,即用相机捕获图像然后对其进行解码。我可以使用此代码捕获图像,但在捕获后,我正在尝试使用 LuminanceSource、RGBLuminanceSource 等类对捕获图像的位图进行解码。

但是生成的二进制位图,

    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

似乎为空。

谁能告诉我这是为什么?我看到很多帖子说这对他们有用,但对我不起作用。

谁能给我一些建议。

这是我引用的链接,我使用的是已接受答案中的确切代码

Barcode/Qr Code Reader for Android

【问题讨论】:

  • 我是在看到您的评论后才知道另一个问题的。即使那样,我也没有得出什么结论。不可能吗?
  • 我遇到了同样的问题。在这里查看我的答案stackoverflow.com/questions/14861553/…
  • @Jameo,感谢您的回复。我会检查这个
  • 基本上,通过一些中间步骤(也导入了 core.jar),您可以获取位图并对其进行解码。请注意,如果结果高,您可能想要裁剪位图

标签: android zxing barcode-scanner


【解决方案1】:

我没有使用 zxing 库,但在我的应用程序中使用了 biggu Barcode Scanner。它还在内部使用相同的 zxing 库,但经过定制,使得集成过程非常容易。在这里查看我的Answer,它可能会帮助您集成条形码扫描仪。如果您有兴趣通过解码图像来扫描条形码,也可以在同一链接中参考已接受的答案。

【讨论】:

  • 感谢您的回复。但是在接受的答案中,捕获图像会发生什么?我应该只使用 Zxing 和 IntentIntegrator。
  • @tejas 在接受的答案中它获取图像然后解码该图像。我可以建议你使用 Biggu Barcode Scanner 它将与 zxing 库相同
  • 哦,是吗?我认为那不是直接的方法。不,@TNR,更换扫描仪不在我手中,希望你明白了:(
【解决方案2】:

您应该获得所有代码,包括您可以从 Google 代码托管下载的 zXing 库(core.jar),然后修改 CaptureActivity.class 以将结果返回到您之前的活动。通话意图

   Intent ii=new Intent(your activity.this,CaptureActivity.class);
    startActivityForResult(ii);

然后定义 onActivityForResult 你会得到相应的结果。

【讨论】:

  • 为什么是 CaptureActivity?根据他们在 ZXingTestActivity.java 中给出的示例,是否不可能使用 IntentIntegrator。我不希望它强迫我安装条形码扫描仪应用程序。这就是我面临的问题
  • 提供的示例无法解决您的问题。 Intent Integrator 假设应该有 Zxing 条码扫描仪应用程序,否则它会强制安装应用程序。在您的情况下,您需要在您的应用程序中使用条码扫描仪,不是吗?
  • 是的,它要求我安装扫描仪应用程序。那么解决这个问题的方法是什么?但在 iPhone 中,我认为可以使用相同的 Zxing。那么在android中也应该可以吧?
  • 哦,对不起,iPhone 应用程序使用了其他一些叫做扫描 sdk 的 sdk
【解决方案3】:

我终于找到了答案。使用 IntentIntegrator 会要求您手动安装扫描仪应用程序,然后使用它扫描条形码。

因此,既不想使用应用程序也不想使用意图调用的人可以使用库中提供的另一种名为 CaptureActivity 的活动

    Intent intent = new Intent(MyActivity.this, CaptureActivity.class);
    startActivityForResult(intent, 1);

这个类存在于您下载的 Zxing 库的 android 文件夹中。将此 android 项目导入您的应用程序将集成 Zxing 库。导入时请注意包名称。

您可以根据需要修改CaptureActivity

注意:

添加 core.jar 非常重要,否则你会遇到很多错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多