ZXing für Kotlin: Vollständige Anleitung zum Scannen von QR-Codes und Barcodes
In der heutigen Welt der mobilen Apps und Prozessautomatisierung ist das schnelle Auslesen von Informationen aus QR-Codes und Barcodes zum De-facto-Standard geworden. Die Bibliothek ZXing (ausgesprochen "Zebra Crossing") ist ein leistungsstarkes Open-Source-Tool, das Entwicklern ermöglicht, Funktionen zur Erkennung und Generierung von eindimensionalen (EAN, UPC, Code 128) und zweidimensionalen (QR, Data Matrix, Aztec) Codes einfach in ihre Anwendungen zu integrieren.
Diese Anleitung richtet sich an Kotlin-Entwickler, die ZXing von der grundlegenden Installation bis hin zur Erstellung komplexer Scanner mit Leistungsoptimierung erlernen möchten. Wir behandeln nicht nur die Standardszenarien, sondern auch die kniffligen Details, die bei Anfängern oft zu Fehlern führen.
1. Was ist ZXing und warum wird es benötigt?
ZXing ist eine Bildverarbeitungsbibliothek, die auf das Dekodieren und Kodieren von Barcodes spezialisiert ist. Sie wurde von Google entwickelt und wird von der Community gepflegt. Ihr Hauptvorteil ist die Plattformunabhängigkeit (Java/Kotlin, C++, JavaScript, Python) und die Unterstützung einer Vielzahl von Formaten: von klassischen QR-Codes bis hin zu speziellen Industrie-Codes wie PDF417.
Warum ZXing in Kotlin verwenden? Erstens ist es der Goldstandard für die Android-Entwicklung. Zweitens bietet die Bibliothek vorgefertigte Klassen für die Kameraarbeit (über CameraX oder Camera2), was das Schreiben von Low-Level-Code zur Videoaufnahme überflüssig macht. Drittens kann ZXing nicht nur mit Live-Video, sondern auch mit vorhandenen Bildern (Dateien aus der Galerie) arbeiten, was die Anwendungsszenarien erweitert: vom Scannen von Quittungen bis zur Erkennung von Codes auf Produktverpackungen in der Logistik.
2. Installation
Für Kotlin (Android) erfolgt die Installation über das Gradle-Build-System. Fügen Sie die folgenden Abhängigkeiten in Ihre build.gradle-Datei (Module: app) ein:
dependencies {
// Hauptbibliothek ZXing
implementation("com.google.zxing:core:3.5.3")
// Zusätzliches Modul für die Kameraarbeit (empfohlen)
implementation("com.journeyapps:zxing-android-embedded:4.3.0")
}
Wenn Sie Kotlin Multiplatform oder reines serverseitiges Kotlin (Ktor) verwenden, benötigen Sie nur das Core-Modul:
implementation("com.google.zxing:core:3.5.3")
Für Desktop-Anwendungen (JVM) fügen Sie die Abhängigkeit analog in Maven oder Gradle hinzu. Nach der Synchronisierung des Projekts ist die Bibliothek einsatzbereit.
3. Schnellstart – Minimales funktionierendes Beispiel
Der einfachste Weg, ZXing zu testen, ist das Starten einer integrierten Activity zum Scannen. Dazu reicht es, einen Intent aufzurufen. Nachfolgend finden Sie den minimalen Code für eine Android Activity in Kotlin:
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
class MainActivity : AppCompatActivity() {
// Registriert den Contract zum Starten des Scanners
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
if (result.contents == null) {
Toast.makeText(this, "Scan abgebrochen", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Ergebnis: ${result.contents}", Toast.LENGTH_LONG).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Konfiguration der Scan-Optionen
val options = ScanOptions()
options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) // Nur QR
op Auch in der Bibliothek
Geolokalisierung und Karten in Kotlin: Überblick über Bibliotheken und Tools
WebSocket-Bibliotheken für Rust: Tokio-tungstenite und async-tungstenite für Echtzeit
Kysely TypeScript: Vollständiges Tutorial mit Codebeispielen
Arbeit mit YAML in TypeScript: Parsen, Generieren und Validieren von Daten