Compose Multiplatform Barcode Scanning Library
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
}
}
}
}