QR Code & Camera Functionality in Ionic Capacitor [closed]

Discussão em 'Angular' iniciado por Sandip Developer, Março 25, 2025.

  1. I built an Android app using Ionic Capacitor to collect appliance data reports. Key features include QR code scanning, camera functionality, geolocation tracking, and image printing. Issues:

    1. QR Code Scanning: Works on some Android devices but not on others.
    2. Camera: The camera gets stuck or takes too long to open and Geolocation data is printed on images properly.

    Package: capacitor-mlkit/barcode-scanning URL: https://www.npmjs.com/package/@capacitor-mlkit/barcode-scanning

    try {
    const { barcodes } = await BarcodeScanner.scan();
    if (barcodes.length > 0) {
    this.scannedData = barcodes[0].rawValue; // Extract scanned URL
    console.log("Scanned URL:", this.scannedData);
    this.fetchAndExtractContent(this.scannedData);
    }
    } catch (error) {
    console.error("Scanning error:", error);
    }
    }


    Package: @capacitor/camera URL: https://www.npmjs.com/package/@capacitor/camera

    async captureAndCompressImage(index: number) {
    this.loader.showLoading();
    try {

    const status = await Network.getStatus();
    if (!status.connected) {
    alert("You have no network, so getting the location may take time...");
    }


    const position = await Geolocation.getCurrentPosition();
    const latitude = position.coords.latitude.toFixed(6);
    const longitude = position.coords.longitude.toFixed(6);
    this.loader.dismiss();
    const image = await Camera.getPhoto({
    quality: 40,
    resultType: CameraResultType.DataUrl,
    source: CameraSource.Camera,
    });

    const address = await this.getAddressFromCoordinates(latitude, longitude);
    const locationText = `${address} (Lat: ${latitude}, Lng: ${longitude})`;
    const imageDataUrl = await this.overlayTextOnImage(image.dataUrl!, locationText);

    switch (index) {
    case 1:
    this.productData.photo1 = imageDataUrl;
    break;
    case 2:
    this.productData.photo2 = imageDataUrl;
    break;
    case 3:
    this.productData.photo3 = imageDataUrl;
    break;
    }
    } catch (error) {
    console.error('Error capturing image:', error);
    this.loader.dismiss();
    }
    }

    Continue reading...

Compartilhe esta Página