使用ZXing创建一个Android条码扫描应用程序

waj*_*jiw 164 android barcode barcode-scanner zxing

我一直在搜索如何在我的应用程序中添加条形码扫描仪.有没有人知道任何例子或知道如何轻松地做到这一点?

Chr*_*Orr 208

ZXing项目提供了一个独立的条形码阅读器应用程序 - 通过Android的意图机制 - 可以被其他希望集成条形码扫描的应用程序调用.

最简单的方法是SCAN Intent从您的应用程序中调用ZXing ,如下所示:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

按下链接的按钮mScan将直接启动到ZXing条形码扫描仪屏幕(如果未安装ZXing,则会崩溃).一旦识别出条形码,您将Activitycontents变量中收到结果.

为了避免崩溃并简化您的工作,ZXing 提供了一个实用程序类,您可以将其集成到您的应用程序中,通过将用户重定向到Android Market(如果他们尚未安装),可以使ZXing的安装更加顺畅.

最后,如果您想要将条形码扫描直接集成到您的应用程序中而不依赖于安装单独的ZXing应用程序,那么它就是一个开源项目,您可以这样做!:)


编辑:有人编辑了这个指南到这个答案(听起来有点奇怪,我不能保证其准确性,我不知道为什么他们在2015年使用Eclipse):

一步一步在eclipse中设置zxing 3.2.1

  1. 从" https://github.com/zxing/zxing " 下载zxing-master.zip
  2. 解压缩zxing-master.zip,使用eclipse在zxing-master中导入"android"项目
  3. 从" http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ " 下载core-3.2.1.jar
  4. 在"android"项目中创建"libs"文件夹,并将cor-3.2.1.jar粘贴到libs文件夹中
  5. 单击项目:选择"属性" - >"Java编译器"将级别更改为1.7.然后点击"Android"将"Project build target"更改为android 4.4.2+,因为使用1.7需要使用Android 4.4进行编译
  6. 如果"zxing-master/android/app/src/main/java/com/google/zxing/client/android/camera /"中不存在"CameraConfigurationUtils.java".你可以从"zxing-master/android-core/src/main/java/com/google/zxing/client/android/camera /"复制它并粘贴到你的项目中.
  7. 清理并构建项目.如果您的项目显示有关"switch - case"的错误,则应将其更改为"if - else".
  8. 已完成.清理并构建项目.您可以单击"Proprties">"Android">单击"Is Libraries"以用于您的项目.

  • 这样做非常好的方法涉及更多的代码,这将确保用户在必要时干净地提示安装条形码扫描器.这是他提到的另一个环节.复制该课程,网址为http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java并使用该课程.再次没有其他代码需要.如果你想要你可以一路走下去并嵌入扫描码,但没有一个很难的理由,这对你来说更难. (14认同)
  • (我是BTW的项目 - 我们可以继续http://groups.google.com/group/zxing/)克里斯托弗是对的.通过使用这样的代码,您根本不需要导入任何项目代码.您正在通过Intent呼叫条形码扫描仪应用程序; 您的应用中没有条形码扫描代码. (5认同)
  • 是的,您需要复制它(注意Apache许可证要求).虽然它很简单,但我不打扰通过svn:externals或任何东西保持最新状态. (2认同)

小智 41

直到我找到一些网站(我现在再也找不到它)时,我遇到了一个问题,我解释说你需要在intent.putExtra的名称中包含软件包名称.

它会拉起应用程序,但不会识别任何条形码,当我更改它时.

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
Run Code Online (Sandbox Code Playgroud)

intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
Run Code Online (Sandbox Code Playgroud)

它运作得很好.对于任何其他新手andorid程序员来说只是一个提示.


Yac*_*ack 23

使用提供的IntentInegrator更好.它允许您提示用户安装条形码扫描仪,如果他们没有.它还允许您自定义消息.IntentIntegrator.REQUEST_CODE常量保存onActivityResult的请求代码的值,以在上面的if块中检查.

IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity 
intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR
Run Code Online (Sandbox Code Playgroud)

IntentIntegrator.java


Ara*_*cem 11

如果要包含在代码中而不使用Zxing库建议的IntentIntegrator,可以使用其中的一些端口

http://code.google.com/p/android-zxinglib/

http://code.google.com/p/android-quick-response-code/

我使用第一个并且完美!它有一个示例项目来尝试它


Mic*_*son 11

使用Zxing这种方式需要用户也安装条形码扫描仪应用程序,这是不理想的.你可能想要的是直接将Zxing捆绑到你的应用程序中.

我强烈建议使用这个库:https://github.com/dm77/barcodescanner

它需要您尝试直接集成Xzing或Zbar的所有疯狂构建问题.它使用了这些库,但是将它们包装在一个非常简单易用的API中.


Jim*_*aca 6

条形码检测现已在Google Play服务中提供. 设置过程的代码实验室,这里是api文档示例项目.