ZXing pour Kotlin : Guide complet pour scanner QR codes et codes-barres
Dans le monde des applications mobiles et de l'automatisation, la capacité à lire rapidement des informations depuis des QR codes et des codes-barres est devenue un standard de facto. La bibliothèque ZXing (prononcé "zebra crossing") est un puissant outil open-source qui permet aux développeurs d'intégrer facilement la reconnaissance et la génération de codes unidimensionnels (EAN, UPC, Code 128) et bidimensionnels (QR, Data Matrix, Aztec) dans leurs applications.
Ce guide est conçu pour les développeurs Kotlin souhaitant maîtriser ZXing, de l'installation de base à la création de scanners avancés optimisés. Nous aborderons non seulement les scénarios standards, mais aussi les points délicats qui causent souvent des erreurs chez les débutants.
1. Qu'est-ce que ZXing et pourquoi l'utiliser ?
ZXing est une bibliothèque de traitement d'images spécialisée dans le décodage et l'encodage de codes-barres. Créée par Google et maintenue par la communauté, son principal atout est sa multiplateforme (Java/Kotlin, C++, JavaScript, Python) et sa prise en charge d'un vaste éventail de formats : des QR codes classiques aux codes industriels spécifiques comme le PDF417.
Pourquoi utiliser ZXing en Kotlin ? D'abord, c'est le standard de référence pour le développement Android. Ensuite, la bibliothèque fournit des classes prêtes à l'emploi pour la gestion de la caméra (via CameraX ou Camera2), évitant ainsi d'écrire du code bas niveau pour la capture vidéo. Enfin, ZXing peut traiter aussi bien un flux vidéo en direct que des images fixes (fichiers de la galerie), élargissant les cas d'usage : du scan de tickets à la reconnaissance de codes sur des emballages en logistique.
2. Installation
Pour Kotlin (Android), l'installation se fait via le système de build Gradle. Ajoutez les dépendances suivantes dans le fichier build.gradle (Module: app) :
dependencies {
// Bibliothèque principale ZXing
implementation("com.google.zxing:core:3.5.3")
// Module complémentaire pour la caméra (recommandé)
implementation("com.journeyapps:zxing-android-embedded:4.3.0")
}
Si vous utilisez Kotlin Multiplatform ou du Kotlin serveur pur (Ktor), seul le module core est nécessaire :
implementation("com.google.zxing:core:3.5.3")
Pour les applications desktop (JVM), ajoutez la dépendance dans Maven ou Gradle de la même manière. Après synchronisation du projet, la bibliothèque est prête à l'emploi.
3. Démarrage rapide — exemple minimal fonctionnel
Le moyen le plus simple de tester ZXing est de lancer l'Activity intégrée pour le scan. Il suffit d'appeler un Intent. Voici un code minimal pour une Activity Android en 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() {
// Enregistrement du contrat pour lancer le scanner
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
if (result.contents == null) {
Toast.makeText(this, "Scan annulé", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Résultat : ${result.contents}", Toast.LENGTH_LONG).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Configuration des options de scan
val options = ScanOptions()
options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) // QR uniquement
op Aussi dans la bibliothèque
Jetons JWT en TypeScript : guide complet pour travailler avec les JSON Web Tokens
Travailler avec CSV en C++ : bibliothèques, analyse et écriture de données
multierr Go : guide complet avec exemples
CoreLocation pour Swift : guide complet avec exemples
Twilio JavaScript (Node.js) : guide complet avec exemples