【问题标题】:How to read code 39 using zxing in android?如何在android中使用zxing读取代码39?
【发布时间】:2016-03-27 09:52:09
【问题描述】:

我在我的 android 应用程序中使用 zxing 来读取 QR_CODE 和条形码。我的应用程序无法使用 zxing 读取 CODE_39。我在 CaptureActivity OnResume 方法中使用以下代码:

Intent intent = getIntent();
        String action = intent == null ? null : intent.getAction();
        String dataString = intent == null ? null : intent.getDataString();
        if (intent != null && action != null) {
            if (action.equals(Intents.Scan.ACTION)) {
                 //Scan the formats the intent requested, and return the
                 //result
                 //to the calling activity.
                source = Source.NATIVE_APP_INTENT;
                decodeFormats = DecodeFormatManager.parseDecodeFormats(intent);

            } else if (dataString != null
                    && dataString.contains(PRODUCT_SEARCH_URL_PREFIX)
                    && dataString.contains(PRODUCT_SEARCH_URL_SUFFIX)) {
                // Scan only products and send the result to mobile Product
                // Search.
                source = Source.PRODUCT_SEARCH_LINK;
                sourceUrl = dataString;
                decodeFormats = DecodeFormatManager.PRODUCT_FORMATS;
            } else if (dataString != null
                    && dataString.startsWith(ZXING_URL)) {
                // Scan formats requested in query string (all formats if
                // none
                // specified).
                // If a return URL is specified, send the results there.
                // Otherwise, handle it ourselves.
                source = Source.ZXING_LINK;
                sourceUrl = dataString;
                Uri inputUri = Uri.parse(sourceUrl);
                returnUrlTemplate = inputUri
                        .getQueryParameter(RETURN_URL_PARAM);
                decodeFormats = DecodeFormatManager
                        .parseDecodeFormats(inputUri);
            } else {
                // Scan all formats and handle the results ourselves
                // (launched
                // from Home).
                source = Source.NONE;
                decodeFormats = null;
                }

            characterSet = intent
                    .getStringExtra(Intents.Scan.CHARACTER_SET);

请帮我解决这个问题。提前致谢。

【问题讨论】:

    标签: android barcode qr-code zxing code39


    【解决方案1】:

    如果您使用的是 Android Studio,请添加这些依赖项-

    compile 'me.dm7.barcodescanner:zxing:1.8.3'
    compile 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
    compile 'com.google.zxing:core:3.2.0'
    

    Zxing 扫描时自动取码类型

    integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES) 
    

    这里默认考虑所有类型的代码

    如果你想要特定的二维码,那么只需

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
    

    使用以下代码-

    import me.dm7.barcodescanner.zxing.ZXingScannerView;
    
    public class YourActivity extends Activity {
    
    
    //Barcode Scanning
    private ZXingScannerView mScannerView;
    
    
    // This is your click listener
    public void checkBarcode(View v) {
        try {
            IntentIntegrator integrator = new IntentIntegrator(GateEntryActivity.this);
            integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
            integrator.setPrompt("Scan a barcode");
            integrator.setCameraId(0);  // Use a specific camera of the device
            integrator.setBeepEnabled(false);
            integrator.initiateScan();
            //start the scanning activity from the com.google.zxing.client.android.SCAN intent
            // Programmatically initialize the scanner view
            // setContentView(mScannerView);
        } catch (ActivityNotFoundException anfe) {
            //on catch, show the download dialog
            showDialog(GateEntryActivity.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show();
        }
    }
    
    
    //alert dialog for downloadDialog
    private static AlertDialog showDialog(final Activity act, CharSequence title, CharSequence message, CharSequence buttonYes, CharSequence buttonNo) {
        AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act);
        downloadDialog.setTitle(title);
        downloadDialog.setMessage(message);
        downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
                Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                try {
                    act.startActivity(intent);
                } catch (ActivityNotFoundException anfe) {
    
                }
            }
        });
        downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
            }
        });
        return downloadDialog.show();
    }
    
    //on ActivityResult method
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            if (result.getContents() == null) {
                Log.d("MainActivity", "Cancelled scan");
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            } else {
                Log.d("MainActivity", "Scanned");
                Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();                
            }
        } else {
            Log.d("MainActivity", "Weird");
            // This is important, otherwise the result will not be passed to the fragment
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    

    }

    【讨论】:

    • 我正在使用 core.jar 我在 core.jar 中没有 IntentIntegrator 类。
    • 如果您使用的是 Android Studio,请使用此依赖项 1)compile 'me.dm7.barcodescanner:zxing:1.8.3' 2)compile 'com.journeyapps:zxing-android-embedded:3.0.2 @aar' 3) 编译 'com.google.zxing:core:3.2.0'
    • 我尝试添加提到的依赖项,但我收到此错误:无法解决:com.google.zxing:core:3.2.0
    • 我想在我的应用程序中使用 zxing code_39 扫描仪。 IntentIntegrator 是否允许我在自己的应用程序中使用 zxing 或者它要求我安装 zxing 扫描仪?
    • 其实我用过,不用下载任何配套应用也能正常使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多