Skip to content

formatsToSupport is being ignored #345

Description

@talkingoldfish

The formatsToSupport oprion seems to be ignored when specified and all barcode formats are being scanned against.

I am using v2.1.12 of the library.

A redacted version of the code I am using is as below:

    var qrFormatsToSupport = [ 
        Html5QrcodeSupportedFormats.QR_CODE,
        Html5QrcodeSupportedFormats.AZTEC
    ];
      
    let opts = {
        fps: instance.data.fps,
        disableFlip: instance.data.disableFlip,
        qrbox: instance.data.boxDimension,
        aspectRatio: aspectRatio,
        formatsToSupport: qrFormatsToSupport,
        experimentalFeatures: {
           useBarCodeDetectorIfSupported: true 
        }
    }
.
.
.
                Html5Qrcode.getCameras().then(cameras => {
                  if (cameras && cameras.length) {
                      for (i = 0; i < cameras.length; i++) {
                          arrCameras.push(cameras[i].label);
                          arrCameraIds.push(cameras[i].id);
                          instance.data.arrCameras.push(cameras[i].label);
                      }

                      instance.data.allCameras = cameras;
                      instance.publishState('cameras', arrCameras);
                      instance.publishState('camera_ids', arrCameraIds);
                      instance.data.arrCameraIds = arrCameraIds;
                      
                      if (instance.data.arrCameras.length > 0) {
                          for (i = 0; i < instance.data.arrCameras.length; i++) {
                              if (cameraSide != "manual") {
                                  if (instance.data.arrCameras[i].match(re)) {
                                      html5QrCode.start({ deviceId: { exact: instance.data.arrCameraIds[i] } }, opts, qrCodeSuccessCallback);
                                      break;
                                  }
                                  
                                  if (i == arrCameras.length-1) {
                                      html5QrCode.start({ deviceId: { exact: instance.data.arrCameraIds[0] } }, opts, qrCodeSuccessCallback);
                                      break;
                                  }
                              }
                          }
                      } else { html5QrCode.start({ deviceId: { exact: arrCameraIds[0] } }, opts, qrCodeSuccessCallback); }
                  } else { console.log('No cameras found.'); }
                }).catch(err => {
                  console.error(err);
                });

Note, I am using the facingMode approach as well, but also present this alternative method to select Front / Back cameras as some devices do not seem to select the correct camera with facingMode.

I would expect with this configuration to only be able to scan QR Codes / AZTEC barcodes, however I am able to scan many of the other barcodes as displayed on the page @ https://blog.minhazav.dev/QR-and-barcode-scanner-using-html-and-javascript/#all-supported-formats

Testing was carried out on a Samsung A22 phone, running OS 11, in the Samsung stock browser, the Edge browser and also the Chrome browser.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions