2011-05-17 44 views
1

我遵循了每个指令,维基,入门指南,帮助, 等我可以找到有关ZXing项目。 经过很多次的调试,我终于使用nt core.jar,javame.jar和javese.jar进行编译。 我想将ZXing集成到我的代码中,即我想扫描 \读取条形码并处理其数据。让ZXing工作

我已经导入了上面提到的每个文件的外部jar。然后 我转向https://code.google.com/p/zxing/wiki/DeveloperNotes使用 MultiFormatReader()。 BufferedImage类无法解析。我尝试了任何我知道的 ,我甚至尝试了Android的位图解决方法,但它也没有帮助 我。

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

任何人都可以请帮我理解我该怎么做? 几行代码将不胜感激。

而且,我只想扫描\读取条形码并分析其数据。

回答

0

这里是我做了我的实验性应用:

  • 下载Android版本斑马线条形码扫描器(here
  • 转换该项目为Android Library
  • 删除我并不需要的所有功能
  • 修改CaptureActivity我想要的方式,所以它更好地与我的应用程序集成。

我发现这种方式比较容易,因为Android在跨不同设备的统一摄像头支持方面存在一些问题,ZXing的家伙已经照顾过它。

+0

感谢您的快速回答。我下载了整个项目。我可以从中提取库(/ android /),但是我应该如何处理这些文件?将它们复制到我的项目中? – 2011-05-17 11:04:07

+0

刚才我了解你。我从源创建了一个新的android项目,并将它重定向到zxing的/ andoroid /目录。但我得到太多的错误。这里是截图http://i52.tinypic.com/16gcwav.png – 2011-05-17 11:12:28

+0

有没有办法,我可以猜测你的问题是由该截图:)请发布编译错误日志。 – inazaruk 2011-05-17 15:03:13

5

最简单的答案是,你不应该在Android应用中使用javase.jar。它是用于JavaSE的代码。并非所有JavaSE类都在Android中。特别是Android没有像BufferedImage这样的AWT类。

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

+0

肖恩谢谢你的回应,并分享你的实施。但它似乎并不奏效,而且你还没有告诉我一些新的东西。我熟悉BufferedImage不是JavaSE的一部分,我以为你会帮我解决这个问题。如果你想分享你的实施,你怎么没有提供适当的文件?无论如何,任何帮助将深受赞赏。 (我从来没有试过这么多猜测) – 2011-05-17 15:02:13

+0

我不明白你的评论。 BufferedImage *是JavaSE的一部分。它*不是* Android的一部分。所以,你不能在Android项目中包含像'javase.jar'这样的使用BufferedImage的代码,这并不奇怪。这是你报告的错误,我提供了解决方案:除core.jar之外,不包含任何内容。 ('的JavaME。jar'是JavaME代码,并且在Android中不起作用或者不会有用。)我是ZXing的作者,所以我已经在项目中与你分享了我的所有实现,所以我进一步不理解。 – 2011-05-17 22:19:38

+0

我无意表达意思,请接受我的道歉。无论如何,我应该怎么做才能使用BufferedImage?你能把你的敏锐知识放在几行代码中吗?谢谢。 – 2011-05-17 22:27:43

4

杰克逊我也建议你inazaruk建议你的方式。但如果你仍然有问题整合该部分代码(zxing-android)。

  • 只需下载zxing-core
  • 导入这个核心项目到Eclipse
  • 在您的应用程序的Eclipse构建路径添加斑马线核项目的引用,以便它不是由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); 
+0

我能够导入zxing-core。不知道如何做第三步。无论如何,我跟着DeveloperNotes,但BufferedImage无法解析。 – 2011-05-17 14:44:36

+0

@Mr Jackson如果你现在没有任何问题,那么你不需要将该项目添加到你的构建路径。参见上面编辑的**部分 – 100rabh 2011-05-18 08:02:15

+0

谢谢!现在我需要的只是捕获一个图像,并使用FileInputStream打开它。对? – 2011-05-18 09:18:53

0

嗨,伙计其实我也卡在这个问题。但最后我成功地运行了这个项目。当我们下载zxing项目,只是我们导入它,但有错误号码来,因为许多文件丢失。

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

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