如何将Zxing与DecoratedBarcodeView和CaptureManager结合使用以仅扫描QR码?

时间:2018-10-31 15:33:03

标签: android qr-code zxing

我调用以下函数以从布局中有Activity的{​​{1}}开始扫描QR码。

DecoratedBarcodeView

默认情况下,它会扫描所有条形码,我想将其限制为QR码。

我尝试添加以下几行来启动意图,以便private void openBackCamera() { captureManager = new CaptureManager(this, decoratedBarcodeView); captureManager.initializeFromIntent(getIntent(), savedInstanceState); captureManager.decode(); CameraSettings cameraSettings = decoratedBarcodeView.getBarcodeView().getCameraSettings(); cameraSettings.setAutoFocusEnabled(false); cameraSettings.setFocusMode(CameraSettings.FocusMode.CONTINUOUS); cameraSettings.setRequestedCameraId(Camera.CameraInfo.CAMERA_FACING_BACK); decoratedBarcodeView.pause(); decoratedBarcodeView.getBarcodeView().setFrameRectColor(Color.WHITE); decoratedBarcodeView.getBarcodeView().setFramingRectSize(getSize()); decoratedBarcodeView.getViewFinder().setVisibility(View.VISIBLE); decoratedBarcodeView.decodeSingle(mBarcodeResult); decoratedBarcodeView.resume(); } 在用captureManager初始化时无济于事。

getIntent()

如何限制我的设置以仅扫描QR码?

2 个答案:

答案 0 :(得分:1)

当您仅使用DecoratedBarcodeView时,以下是答案:

List<BarcodeFormat> formats = new ArrayList<>();
formats.add(BarcodeFormat.QR_CODE);
decoratedBarcodeView.getBarcodeView().setDecoderFactory(new DefaultDecoderFactory(formats));

然后,您无需使用IntentCaptureManager

答案 1 :(得分:0)

使用IntentIntegrator生成具有QR码格式的启动意图,而不是直接在启动意图中设置额外的意图。

   public static Intent getLaunchIntent(Activity activity) {
        IntentIntegrator integrator = new IntentIntegrator(activity);
        integrator.setCaptureActivity(QrCodeScanActivity.class);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        return integrator.createScanIntent();
    }

没有明确的例子。希望这会对某人有所帮助。