【问题标题】:How to scan plain text QR code using Zxing Android Embedded如何使用 Zxing Android Embedded 扫描纯文本二维码
【发布时间】:2020-12-05 19:47:25
【问题描述】:

我已经有一个 QR/条形码扫描仪,它正在工作。但我有一个问题。扫描仪仅读取包含 url 的 QR 码,但我想扫描仅包含文本的 QR 码。有人知道问题可能是什么吗?

使用的库:

implementation 'com.journeyapps:zxing-android-embedded:3.4.0'

方法:

private void scanCode() {
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.setCaptureActivity(CaptureAct.class);
    integrator.setOrientationLocked(false);
    integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
    integrator.setPrompt("Scanning Code");
    integrator.initiateScan();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    ...
}

【问题讨论】:

  • 帮助提及您正在使用的库或显示一些相关代码
  • @DavidKroukamp 编辑它。
  • 我认为它只是在模拟器上不起作用。
  • 好吧,如果可以忽略不计,那至少是个小问题
  • @DavidKroukamp 是的,对,我不必实施新的扫描仪而松了一口气

标签: android zxing


【解决方案1】:

你好,你需要使用下面的配置

compileSdkVersion 28 // Android 9(API 级别 28) minSdkVersion 24 // Android 7.0(API 级别 24)

在app的build.gradle中使用google vision的依赖

实现'com.google.android.gms:play-services-vision:17.0.2'

这是扫描二维码的代码

cameraViewQR = findViewById(R.id.cameraView);
    cameraViewQR.setZOrderMediaOverlay(true);
    qrHolderScreen = cameraViewQR.getHolder();
    barcodeQR = new BarcodeDetector.Builder(this)
            .setBarcodeFormats(Barcode.QR_CODE)
            .build();
    if (!barcodeQR.isOperational()) {
        Toast.makeText(getApplicationContext(), "Problem Occurred in Setup", Toast.LENGTH_SHORT).show();
        this.finish();
    }
    cameraSourcePhone = new CameraSource.Builder(this, barcodeQR)
            .setFacing(CameraSource.CAMERA_FACING_BACK)
            .setRequestedFps(24)
            .setAutoFocusEnabled(true)
            .setRequestedPreviewSize(480, 480)
            .build();
    cameraViewQR.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            try {
                if (ContextCompat.checkSelfPermission(ScanActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                    cameraSourcePhone.start(cameraViewQR.getHolder());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {

        }
    });
    barcodeQR.setProcessor(new Detector.Processor<Barcode>() {
        @Override
        public void release() {

        }

        @Override
        public void receiveDetections(Detector.Detections<Barcode> detections) {
            final SparseArray<Barcode> barcode = detections.getDetectedItems();
            if (barcode.size() > 0) {
                Intent intent = new Intent();
                intent.putExtra("QRCODE", barcode.valueAt(0));
                setResult(RESULT_OK, intent);
                finish();
            }
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多