这个问题在这里已经有答案了:

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

有帮助吗?

解决方案

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

最简单的方法是调用 ZXing SCAN Intent 从您的申请中, 像这样:

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,则崩溃)。识别条形码后,您将在您的帐户中收到结果 Activity, ,这里在 contents 多变的。

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

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


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

在eclipse中一步步设置zxing 3.2.1

  1. 从“下载zxing-master.zip”https://github.com/zxing/zxing"
  2. 解压zxing-master.zip,使用eclipse导入zxing-master中的“android”项目
  3. 从“下载 core-3.2.1.jarhttp://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  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”以用于您的项目。

其他提示

我在实现代码时遇到了问题,直到我发现一些网站(我现在无法再次找到它)解释说您需要在intent.putExtra 的名称中包含包名称。

它会启动应用程序,但它无法识别任何条形码,当我更改它时。

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

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

效果很好。这只是给其他 Android 程序员新手的一个提示。

使用提供的 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

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

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

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

如果您想包含到代码中而不使用 ZXing 库推荐的 IntentIntegrator,则可以使用以下一些端口:

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

条形码检测现已推出 Google Play 服务. 代码实验室 设置过程,这里是 API文档, ,和一个 示例项目.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top