【问题标题】:How to execute BarCode scanner from ZXing sources on Java, Android?如何在 Java、Android 上从 ZXing 源执行条形码扫描仪?
【发布时间】:2012-01-04 17:20:06
【问题描述】:

我刚刚使用条形码扫描仪(ZXing 1.7)进行了申请。用户没有在他的手机上使用条形码扫描仪,因此我无法将外部条形码扫描仪添加到我的应用程序中。我已将 ZXing 源添加到我的项目中,但我不知道如何在没有意图的情况下执行它。请帮我。

更新:或者我怎样才能让外部条码扫描器自动安装在我的应用程序中?

【问题讨论】:

  • 我会尽快改进的,但现在我很困惑,请给我一个想法!

标签: java android barcode barcode-scanner zxing


【解决方案1】:

您无法安装要自动安装的外部条码扫描器。您可以做的是检查它是否已安装,如果未安装,则显示询问用户是否要安装它的对话框(这会将用户带到应用市场链接)。

如果你想避免这种情况,你可以直接集成 ZXing 库,但这需要更多的工作。条码扫描器应用程序是开源的,因此您可以从那里了解如何操作。

【讨论】:

  • 我有并且他们提供了一个集成 Intent,使用它。阅读该文件中的文档,它会告诉你如何完全按照@JJJ 所说的去做。
【解决方案2】:

如果zxing条码扫描器安装在手机上,就很简单了:

Intent intent = new Intent(
                                "com.google.zxing.client.android.SCAN");
                        intent.putExtra("SCAN_MODE", "PRODUCT_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE"
                        intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history
                        startActivityForResult(intent, 0);

OnActivityResult:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                    String contents = 

data.getStringExtra("SCAN_RESULT"); //this is the result
    }
else if (resultCode == RESULT_CANCELED) {

         // Handle cancel

}

如果没有安装:你可以把这段代码放在 try-catch 块中并捕获异常,你可以这样做:

Uri marketUri = Uri
                                .parse("market://details?id=com.google.zxing.client.android");
                        Intent marketIntent = new Intent(Intent.ACTION_VIEW,
                                marketUri);
                        startActivity(marketIntent);

因此,如果安装了条形码扫描仪,它会将应用程序重定向到 android 市场,并且您的应用程序会继续运行一次。

如果你不想在你的应用程序中使用其他应用程序,你必须下载 zxing 库并尝试使用 core.jar 文件中的类(它是使用 apache ant 创建的)。按照本教程执行此操作:http://code.google.com/p/zxing/wiki/GettingStarted

【讨论】:

    【解决方案3】:

    只需使用提供的Intent-based integration code。这很容易。它会将用户发送到市场以下载该应用程序。这比尝试自动安装要好得多,至少有三个原因。首先,我不认为用户期望应用程序安装其他应用程序并且可能不喜欢它。其次,只有当用户将设备设置为允许来自外部市场的第三方应用程序时,它才可能起作用。最后,您将安装一个可能较旧的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2013-07-09
      • 2013-06-13
      • 2015-09-30
      • 2012-05-21
      • 2013-10-13
      • 2014-12-11
      相关资源
      最近更新 更多