【问题标题】:Calling barcode scanner on a button click in android application在android应用程序中单击按钮调用条形码扫描仪
【发布时间】:2011-04-09 10:47:12
【问题描述】:

我已经下载了 zxing 1.6 并且能够通过它成功地运行一个独立的条码扫描器。现在这个扫描仪在另一个项目和(CaptureActivity)中,我有我的应用程序的另一个项目,名为 MyProj ,所有我 想要做的是点击我的项目中的按钮调用另一个项目中的 CaptureActivity,我如何在我的项目中导入整个项目,或者我该怎么做才能让它工作。 提前致谢

【问题讨论】:

  • 是否有一种通用的类似 meme 的类型我可以调用“条形码扫描”?此意图明确指定 zxing 应用程序。
  • com.google.zxing.client.android.SCAN 是用于扫描的通用 Intent。只是 ZXing 在 Android 1.0 之前就已经存在,所以它是事实上的标准。它不仅选择条形码扫描仪。

标签: android barcode-scanner zxing


【解决方案1】:

我认为“复制”条形码扫描仪并将其包含在您的应用中可能会使您的项目超载。您当然应该使用扫描仪的 Intent:

从这里:http://code.google.com/p/zxing/wiki/ScanningViaIntent

如果您的 Android 设备上安装了条形码扫描仪,您可以让它为您扫描并返回结果,只需向其发送一个 Intent。例如,您可以连接一个按钮来扫描二维码,如下所示:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.setPackage("com.google.zxing.client.android");
        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
        }
    }
}

有关更多选项,例如扫描产品条形码,或要求 Barcode Scanner 为您编码和显示条形码,请参阅此源文件:

http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/Intents.java

下面是我们测试应用程序的一些源代码,展示了如何使用它们:

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

IntentIntegrator

我们还开始创建一个小型类库,用于封装上述一些细节。有关可能更简单的集成方法,请参阅 IntentIntegrator。特别是这将处理尚未安装条形码扫描仪的情况。

http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java

通过网址 从 Barcode Scanner v2.6 开始,您还可以从浏览器中的 URL 启动应用程序。只需创建一个指向http://zxing.appspot.com/scan 的超链接,Barcode Scanner 就会启动以处理它。用户还可以选择始终自动打开条形码扫描仪。

注意:此 URL 并非用于在浏览器中提供实际网页,它只是启动本机应用程序的挂钩。

已知问题 用户 jamesikanos 报告了以下“问题”:

使用 launchMode "singleInstance" 创建一个 TabHost 活动 使用“开始扫描”按钮创建子活动(使用此按钮的 IntentIntegrator 启动 zxing) 您的子活动中的 onActivityResult 将立即返回为“已取消” onActivityResult 以后永远不会被调用

【讨论】:

  • 如果您在没有设置软件包的情况下启动意图,您将获得安装的默认二维码阅读器(在我的情况下为 qr druid)或应用程序选择器对话框(如果您有多个)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多