L'API Lecteur de code Google fournit une solution complète pour scanner un code sans que votre application ait besoin de demander l'autorisation d'utiliser l'appareil photo, tout en préservant la confidentialité des utilisateurs. Pour ce faire, vous devez déléguer la tâche de numérisation du code aux services Google Play et ne renvoyer que les résultats de la numérisation à votre application (vidéo 1).
Tout le traitement des images se produit sur l'appareil, et Google ne stocke ni les résultats, ni les données d'image. L'API accepte les mêmes formats de code que l'API de numérisation de codes-barres ML Kit et renvoie le même objet Barcode
.
Cette API est idéale pour les applications qui nécessitent un scan de code fluide sans avoir besoin d'une UI ou d'une expérience d'appareil photo personnalisée. L'implémentation réside entièrement dans les services Google Play, ce qui garantit un impact minimal sur la taille de votre application.
À partir de la version 16.1.0, vous pouvez activer le zoom automatique pour permettre au lecteur de code Google de scanner automatiquement les codes-barres éloignés de la caméra. Lorsque les utilisateurs pointent leur appareil vers un code-barres, le lecteur le détecte de manière intelligente et fait un zoom avant sur le code-barres. Il n'est donc plus nécessaire d'ajuster manuellement le zoom, ce qui accélère, améliore la précision et facilite la lecture des codes-barres (voir la vidéo 2).
Vidéo 1. Intégration du lecteur de code Google | Vidéo 2. Effet de zoom automatique |
Pour les cas d'utilisation plus complexes qui nécessitent une interface utilisateur personnalisée, nous vous recommandons d'utiliser directement l'API de lecture de code-barres ML Kit.
Si vous avez des questions, souhaitez signaler un bug ou avez besoin d'aide, consultez la page de la communauté ML Kit.
Avant de commencer
Pour préparer votre application, procédez comme indiqué dans les sections suivantes.
Configurer votre application
Dans le fichier
settings.gradle
de premier niveau, incluez le dépôt Maven de Google et le dépôt central Maven sous le blocdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Ajoutez la dépendance des services Google Play pour le SDK
play-services-code-scanner
au fichier de compilation Gradle de votre module, qui est généralementapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
Vous pouvez configurer votre application pour que les services Google Play téléchargent automatiquement le module de scanner sur l'appareil lorsque votre application est installée depuis le Play Store.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
Vous pouvez également vérifier explicitement la disponibilité du module de scanner et demander le téléchargement via l'API ModuleInstallClient des services Google Play.
Si vous n'activez pas les téléchargements de modules au moment de l'installation ni ne demandez pas de téléchargements explicites, et si le module du lecteur de code-barres n'est pas déjà installé pour un autre cas d'utilisation, les services Google Play téléchargent le module du lecteur de code-barres la première fois qu'il est utilisé.
Scanner un code
Pour scanner un code-barres, procédez comme suit :
Facultatif: Configurez le lecteur de code.
Si vous savez quels formats de codes-barres vous prévoyez de lire, vous pouvez améliorer la vitesse du détecteur de codes-barres en le configurant pour qu'il ne détecte que ces formats. Par exemple, pour ne détecter que les codes Aztec et les codes QR, créez un objet
GmsBarcodeScannerOptions
comme dans l'exemple suivant:Kotlin
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build()
Java
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build();
Par défaut, le zoom automatique est désactivé. Pour activer la fonctionnalité de zoom automatique à partir de la version 16.1.0, appelez
enableAutoZoom()
comme indiqué dans l'exemple de code suivant.Kotlin
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build()
Java
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build();
Obtenez une instance de
GmsBarcodeScanner
, comme indiqué dans l'exemple de code:Kotlin
val scanner = GmsBarcodeScanning.getClient(this) // Or with a configured options // val scanner = GmsBarcodeScanning.getClient(this, options)
Java
GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this); // Or with a configured options // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
Demandez à scanner un code en appelant
startScan()
.Kotlin
scanner.startScan() .addOnSuccessListener { barcode -> // Task completed successfully } .addOnCanceledListener { // Task canceled } .addOnFailureListener { e -> // Task failed with an exception }
Java
scanner .startScan() .addOnSuccessListener( barcode -> { // Task completed successfully }) .addOnCanceledListener( () -> { // Task canceled }) .addOnFailureListener( e -> { // Task failed with an exception });
Gérez l'
Barcode
obtenu.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();