L'API de lecture de code de Google offre une solution complète pour scanner des codes sans que votre application ne nécessite l'autorisation d'accès à l'appareil photo, tout en préservant la confidentialité des utilisateurs. Pour ce faire, vous déléguez la tâche de numérisation du code aux services Google Play et ne renvoyez que les résultats de l'analyse à votre application. Le traitement de l'image est effectué sur l'appareil, et Google ne stocke pas les résultats ni les données des images. L'API accepte les mêmes formats de code que l'API ML Kit de lecture de codes-barres et renvoie le même objet Barcode.
Cette API est idéale pour les applications qui ont simplement besoin de scanner un code et ne nécessitent pas d'interface utilisateur ni d'appareil photo personnalisés. La mise en œuvre est entièrement intégrée aux services Google Play. La taille de votre application n'est donc pas significative. Pour les cas d'utilisation plus complexes nécessitant une interface utilisateur personnalisée, utilisez directement l'API de lecture de code-barres ML Kit.
Si vous avez des questions, si vous souhaitez signaler un bug ou si vous avez besoin d'aide, consultez la page de la communauté de ML Kit.
Avant de commencer
Pour préparer votre application, procédez comme indiqué dans les sections suivantes.
Configurer votre application
Dans votre fichier
settings.gradle
de premier niveau, incluez le dépôt Maven de Google et le dépôt central Maven dans 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.0.0-beta3' }
Vous pouvez configurer votre application de sorte que les services Google Play téléchargent automatiquement le module de scanner sur l'appareil lorsque l'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 un téléchargement via l'API ModuleInstallClient des services Google Play.
Si vous n'activez pas le téléchargement de modules au moment de l'installation ou si vous demandez un téléchargement explicite, les services Google Play téléchargent le module de scanner la première fois qu'il est utilisé, s'il n'a pas déjà été installé pour un autre cas d'utilisation.
Scanner un code
1. (Facultatif) Configurer le lecteur de code
Si vous savez quels formats de code-barres vous attendez à lire, vous pouvez améliorer la vitesse du détecteur de code-barres en le configurant pour qu'il ne détecte que ces formats. Par exemple, pour ne détecter que le code 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();
2. Obtenir une instance de GmsBarcodeScanner
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);
3. Demandez un scan de 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 });
4. Gérer le code-barres obtenu
Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();