将条形码扫描仪添加到Android应用程序只是为了使用Zxing进行解码

Sri*_*Sri 1 android decode barcode zxing

我一直在搜索如何添加条形码扫描仪到我的应用程序只是为了解码条形码.我找到了一个非常好的应用程序,我可以整合做那个叫做"Zxing"但唯一的问题是,它有编码和解码但我真正想要的只是解码,以便我可以限制我使用的Zxing开源文件.

我搜索了很多地方找不到只用zxing解码?

所以我的问题是我怎么能只使用Zxing进行解码而不进行编码呢?我们非常感谢示例代码和分步说明.

提前致谢!

Foa*_*Guy 10

最简单的方法是通过Intent扫描.

这是一些示例代码:

//This intent will ask the Barcode Scanner app to scan a code and give us the result
Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 

/* you can optionally add an extra to the intent that tells it what type of code its looking for. Like this:
 * 
 * intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
 * 
 * If you don't put that in it will scan all types.
 */

 startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)

然后在你的onActivityResult()中你可以获得这样的扫描数据:

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            // contents contains whatever was encoded
            String contents = intent.getStringExtra("SCAN_RESULT");

            // Format contains the type of code i.e. UPC, EAN, QRCode etc...
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");


        }
    }

}
Run Code Online (Sandbox Code Playgroud)

编辑:

Intent模型内置于android的核心思想中.它被放在那里是有充分理由的.通过只有一个应用程序处理条形码扫描并将结果返回给任何其他想要使用它的应用程序,我们可以减少浪费的空间.

例如,如果用户有5个应用程序都扫描不同的条形码并使用它们做各种事情,如果所有这5个应用程序在他们自己的应用程序中包含他们自己的条形码解码,则用户现在在他们的设备上有5个条形码读取功能的副本浪费空间.

Intent模型(特别是条形码解码)的另一个优点是它允许您的应用程序需要更少的权限.因为您不再需要访问相机.

它还使开发人员的一切变得更加简单.正如您在上面所看到的,通过意图与zxing集成所需的工作量是最小的.您会发现可以重复使用Zxing项目的某些部分并将它们包含在您的应用程序中.但是起床和跑步要困难得多.

斑马线项目是开放的来源,所以你当然欢迎启动通过源采摘找出你需要手动复制到你的项目,该项目的类.我建议如果您打算在第一次尝试时使用此路线,则不要尝试删除编码功能.完成整个工作,然后开始删除东西.很可能如果你试图只占用项目的某些子集,有些东西将无法正常运行,即使它们看起来不应该受到你遗漏的影响.

最后一点建议,我完全理解为什么你想在你自己的应用程序中包含这个功能(我自己一直在那里).但是不要轻易做出这个决定,并且花点时间考虑这样的事情:假设你确实在自己的应用程序中包含了这个功能.一切顺利.但经过一段时间后,您开始看到某些设备上出现奇怪的错误,导致他们无法使用您应用的扫描功能.现在你将处于一种情况,你将不得不尝试调试和修复你没有创建的东西,并且可能无法完全理解所有正在发生的事情.而与Intent的集成使得这种调试和修复工作由实际了解其工作方式和需要解决的问题的人员完成,并且他们根据自己的更新计划进行工作.所以这个修复程序会比你可能得到它们的速度快得多.