在Android应用程序中嵌入ZXing

boo*_*man 21 embed android barcode-scanner zxing

所以我是另一个不幸的Android开发初学者需要在他的应用程序中嵌入ZXing条码扫描器.

有很多问题要求如何在stackoverflow上执行此操作,但没有一个问题的答案对于初学者来说是真正可以理解和解释的.所有答案都说"你需要做的就是构建ZXing项目的核心库,引用它你的项目,然后将一些代码从ZXing的android /目录复制到你的应用程序,你就完成了".但这对菜鸟来说并不是很有帮助.

我的项目中引用了ZXings核心库.我打开了Barcode Scanner应用程序源.我正在尝试阅读和理解条码扫描器应用程序的代码,但它对我的知识水平来说太复杂了.

我只想在我的应用程序中有一个按钮,当按下时,打开条形码扫描仪,扫描仪应该只能扫描条形码,解码并返回数字,它不需要将代码发送到任何地方得到任何信息等,我自己照顾这些事情.我只需要一个简单的扫描仪,它可以在按钮点击时启动,扫描代码并给我结果.但我无法想象自己该怎么做.我认为如果你只需要从ZXing扫描仪复制一些文本就不难做到,你只需要了解它的代码.

因此,如果有人可以解释这一点(告诉你要复制的代码部分,如何在onClick方法按钮中启动扫描仪等)请这样做,我相信有很多人会非常感谢这一点,就像我会是.

Cas*_*mer 22

我必须完全按照你的要求去做.这并不容易,但也不是太糟糕.这也是我的第一个(商业或其他)Android应用程序.我做的是:

  • 在您的机器上编译并运行ZXing项目.这里有一个很好的教程如何做到这一点.
  • 调整此代码以满足您的需求.我把很多项目剥离到了基本扫描仪.然后,我围绕它构建了我的项目的其余部分.这是怎么做的.

  • 使CoreA中的CaptureActivity尽可能简单.您只需要从核心扫描器代码返回的数字.这是我项目结构的图片:

适应性ZXing项目的结构

  • 您会发现,您需要修改4个文件以使修改后的活动类生效.这些文件是CameraCaptureActivity类,CaptureActivityHandler类以及Decode Thread和Decode处理程序类.我在这里托管了这些文件.

  • 将这四个文件放入ZXing工作项目的副本中.删除原始的CaptureActivity以及已替换的其他原始线程和处理程序类.(忽略CaptureActivityHandlerDemo文件,因为它被错误地放在那里)

  • 更改包名称以匹配工作的ZXing包名称.确保所有这四个类中的Activity名称相同.传入一个实现"getHolder"的接口而不是Activity类本身可能是个好主意.

  • 确保您已根据活动名称的任何更改更新了清单.确保您有一种导航到活动的方法 - 也许使其成为intent过滤器区域中的默认类.

  • 我还为您的活动添加了一个布局文件 - 它非常简单,但是您需要让扫描仪启动并运行.它被称为camera_capture.xml

希望这是您启动和运行所需的一切.这不是一个简单的过程,不幸的是我不能把你的整个项目都给你,因为它是一个商业产品.

祝好运!!

PS请发表任何问题作为对此答案的评论,我会尽力帮助.


Ral*_*alf 7

我将条形码扫描器分叉并将其转换为库项目,如果您只是通过IntentIntegrator扫描条形码,则删除了大多数不需要的功能.

有关说明的项目可在https://github.com/embarkmobile/zxing-android-minimal获得.

如果您已经在使用Maven,那么将它包含在您的项目中非常容易.如果不是 - 您可以使用CaspNZ描述的方法将代码复制到项目中.