0

我正在修改现有的应用程序。该应用程序通过 Java 类和包使用“Zxing 的条形码扫描仪”。

我的项目包括这些包:

com.google.zxing com.google.zxing.integration com.google.zxing.integration.android

我有一堂课,上面有这样的代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

public class QRdecoderActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // temp = this;

        IntentIntegrator.initiateScan(this);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode) {

            case IntentIntegrator.REQUEST_CODE: {

                if (resultCode != RESULT_CANCELED) {

                    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

                    if (scanResult != null) {
                        String upc = scanResult.getContents();

                        Toast.makeText(this, "Contents : " + upc, Toast.LENGTH_LONG).show();

                    }

                }
                finish();               

                break;
            }
        }
    }   
}

一切正常,但是当我开始测试过程时,我发现我需要安装“条形码扫描仪”应用程序。

是这样吗?

我认为我不需要,如果它在我的项目中使用 Java 类。

如何检查应用程序是否已安装?以及如何从我的代码中转到“Google Play”并向用户展示以供下载?

4

1 回答 1

5

这一点之前已经讨论过,并且在 Zxing 网站上有很好的记录。虽然您可以将源代码集成到您的应用程序中,但您也可以通过意图进行扫描。

从您发布的内容来看,源代码似乎已集成到应用程序中,因此您不需要安装它(因为所有类都应该在那里)。

如果系统提示您安装条码扫描器应用程序,听起来好像正在使用通过意图进行扫描。最终结果是您拥有两种方法的混合物,其中通过意图扫描是正在使用的方法。

我个人更喜欢通过意图进行扫描。这记录在这里:http ://code.google.com/p/zxing/wiki/ScanningViaIntent 。

我的理由是您的应用程序变得独立于条形码扫描仪。由新条形码标准或一般错误修复/改进引起的任何更新都会立即提供给最终用户(作为通过 Google Play 进行的更新),因为他们不必等待您的应用程序集成任何更新的源代码。此外,如果您打算为其增加价值,我们鼓励您仅使用 Zxing 的源代码。

如何检查应用程序是否已安装?以及如何从我的代码中转到“Google Play”并向用户展示以供下载?

Zxing 提供了一个类来优雅地处理用户做出意图并且没有安装 Barcode Scanner 应用程序的情况。它将直接将用户带到 Google Play 上的应用程序。您可以在http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java找到它。

上课后,您只需调用以下命令:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();

然后添加到您的活动中

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  if (scanResult != null) {
    // handle scan result
  }
  // else continue with any other code you need in the method
  ...
}
于 2012-04-10T19:24:38.027 回答