如何在Java,Android上从ZXing源执行BarCode扫描程序?

时间:2012-01-04 17:20:07

标签: java android barcode barcode-scanner zxing

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

更新:或者如何让我的应用程序自动安装外部条形码扫描器?

3 个答案:

答案 0 :(得分:2)

您无法安装外部条形码扫描仪以自动安装。您可以做的是检查它是否已安装,如果没有显示一个对话框,询问用户是否想要安装它(这将使用户进入应用程序市场链接)。

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

答案 1 :(得分:1)

如果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

答案 2 :(得分:0)

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