Skip to content

ismai117/KScan

Repository files navigation

official project License Build Multiplatform project Publish Wiki Latest release Latest build

KScan


Compose Multiplatform Barcode Scanning Library

Platform Android Platform iOS


android scanner ios scanner

KScan is a Compose Multiplatform library that makes it easy to scan barcodes in your apps


To integrate KScan into your project

Add the dependency in your common module's commonMain source set


implementation("io.github.ismai117:KScan:0.1.0-alpha04")

Android - MLKit

  • Uses Google’s MLKit library for barcode scanning on Android

iOS - AVFoundation

  • Utilizes Apple’s AVFoundation framework for camera setup and barcode scanning on iOS

Important: iOS requires you to add the "Privacy - Camera Usage Description" key to your Info.plist file inside xcode, you need to provide a reason for why you want to access the camera.

Basic Usage

To use KScan, simply add the ScannerView in your app like this:

if (showScanner) {
    ScannerView(
        codeTypes = listOf(
            BarcodeFormats.FORMAT_QR_CODE,
            BarcodeFormats.FORMAT_EAN_13,
        )
    ) { result ->
        when (result) {
            is BarcodeResult.OnSuccess -> {
                println("Barcode: ${result.barcode.data}, format: ${result.barcode.format}")
            }
            is BarcodeResult.OnFailed -> {
                println("error: ${result.exception.message}")
            }
            BarcodeResult.OnCanceled -> {
                println("scan canceled")
            }
        }
    }
}

To dismiss the scanner, you need to manage your own state, set it to false in the right places inside the ScannerView block after you handle the results

if (showScanner) {
    ScannerView(
        codeTypes = listOf(
            BarcodeFormats.FORMAT_QR_CODE,
            BarcodeFormats.FORMAT_EAN_13,
        )
    ) { result ->
        when (result) {
            is BarcodeResult.OnSuccess -> {
                println("Barcode: ${result.barcode.data}, format: ${result.barcode.format}")
                showScanner = false
            }
            is BarcodeResult.OnFailed -> {
                println("Error: ${result.exception.message}")
                showScanner = false
            }
            BarcodeResult.OnCanceled -> {
                showScanner = false
            }
        }
    }
}

About

Compose Multiplatform Barcode Scanning

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages