Skip to content

ismai117/KScan

Repository files navigation

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-alpha09")

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

Contributors 3

  •  
  •  
  •  

Languages