1

我遵循了所有说明、wiki、入门、指南、帮助等。我可以找到有关 ZXing 项目的信息。经过多次调试,我终于设法使用ant core.jar、javame.jar和javese.jar进行编译。我想将 ZXing 集成到我的代码中,即我希望扫描\读取条形码并处理其数据。

我已将上述每个文件作为外部 jar 导入。然后我转向https://code.google.com/p/zxing/wiki/DeveloperNotes使用 MultiFormatReader()。无法解析 BufferedImage 类。我尝试了我所知道的一切,我什至尝试了 android 的 Bitmap 来解决这个问题,但它也没有帮助我。

我知道我可以使用意图来读取\扫描条形码,但我希望自己处理它而不是安装“第 3 方”应用程序。

谁能帮我理解我该怎么做?几行代码将不胜感激。

再说一次,我只想扫描\读取条形码并分析其数据。

4

4 回答 4

5

最短的答案是您不应该javase.jar在 Android 应用程序中使用。它是用于 JavaSE 的代码。并非所有 JavaSE 类都在 Android 中。特别是 Android 没有 AWT 类,如BufferedImage.

您只想包含core.jar在您的项目中。然后使用它编写您的 Android 应用程序。

于 2011-05-17T12:27:10.017 回答
4

杰克逊我也建议您采用 inazaruk 建议的方式。但是如果您仍然在集成该部分代码(zxing-android)时遇到问题。

  • 只需下载zxing-core
  • 将此核心项目导入您的 Eclipse
  • 在您的应用程序的 Eclipse 构建路径中添加 zxing-core 项目的引用,以便它不是由 JVM 编译而是由 Dalvik 编译(只是避免使用 jar 文件,因为它是使用 JVM 编译的),并且只需使用https://建议的所有类code.google.com/p/zxing/wiki/DeveloperNotes

编辑: 正如 Sean Owen 所说,android 不具备 BufferedImage 类。您需要导入这些类并满足它们的依赖关系。

  • com.google.zxing.BinaryBitmap,
  • com.google.zxing.LuminanceSource,
  • com.google.zxing.MultiFormatReader,
  • com.google.zxing.Reader
  • com.google.zxing.Result
  • com.google.zxing.common.HybridBinarizer

然后你可以像这样使用它

 Bitmap bMap = BitmapFactory.decodeStream(new FileInputStream(file));
 LuminanceSource source = new RGBLuminanceSource(bMap);
 BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
                              source));
 Reader reader = new MultiFormatReader();

 Result result = reader.decode(bitmap);
于 2011-05-17T14:19:05.810 回答
0

嗨,伙计们,实际上我也遇到了这个问题。但最后我成功地运行了这个项目。当我们下载 zxing 项目并简单地导入它时,由于缺少许多文件,因此出现错误的数字。

实际上这些文件分布在整个项目中。因此,如果您在 Zxing-master 中搜索这些文件,您可以轻松找到。复制这些文件并简单地复制到您的项目中,因为在我的工作区中它是“CaptureActivity”。由于 Java 编译器(该项目至少需要 Java 1.7 和 Android OS 4.4)导致的编译错误也可能是一个问题。

无论我在运行这个项目时知道什么,我都会解释。任何查询发表评论。

于 2014-07-17T07:43:00.103 回答
0

这是我为我的实验应用程序所做的:

  • ZXing Barcode Scanner 安卓版下载(这里
  • 将此项目转换为Android 库
  • 删除了我不需要的所有功能
  • 修改CaptureActivity了我想要的方式,因此它更好地与我的应用程序集成。

我发现这种方式更容易,因为 Android 在不同设备上统一的相机支持存在一些问题,而 ZXing 的人已经解决了这个问题。

于 2011-05-17T10:53:59.903 回答