165

我一直在寻找如何将条形码扫描仪添加到我的应用程序中。有没有例子或者我怎样才能轻松做到这一点?

4

7 回答 7

210

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
        }
    }
}

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

为了避免崩溃并为您简化事情,ZXing提供了一个实用程序类,您可以将其集成到您的应用程序中,以使 ZXing 的安装更顺畅,如果用户尚未安装它,则将其重定向到 Android Market。

最后,如果您想将条码扫描直接集成到您的应用程序中,而不依赖安装单独的 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. 完全的。清理并构建项目。您可以单击“属性”>“Android”>单击“是库”以用于您的项目。
于 2010-01-12T20:04:39.583 回答
41

在我找到某个网站(我现在找不到它)之前,我在实现代码时遇到了问题,该网站解释了您需要在 intent.putExtra 的名称中包含包名称。

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

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");

效果很好。只是对任何其他新手 Android 程序员的提示。

于 2010-11-04T05:47:28.330 回答
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

IntentIntegrator.java

于 2010-10-19T02:52:58.260 回答
11

如果你想包含在你的代码中而不是使用 ZXing 库推荐的 IntentIntegrator,你可以使用这些端口中的一些:

我用的是第一个,效果很好!它有一个示例项目可以试用。

于 2012-07-12T11:42:30.800 回答
11

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

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

尝试直接集成 Xzing 或 Zbar 会遇到所有疯狂的构建问题。它在幕后使用这些库,但将它们包装在一个非常简单易用的 API 中。

于 2014-06-14T21:49:53.000 回答
6

条码检测现在可在Google Play 服务中使用。 设置过程的代码实验室,这里是api 文档示例项目

于 2015-08-22T14:10:30.257 回答
3

您可以使用此快速入门指南http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/和简单的示例项目来构建没有 IntentIntegrator 的 android 应用程序。

于 2013-09-06T09:02:21.890 回答