Lecteur de code Google (Android uniquement)

L'API Google Code Scanner fournit une solution complète pour scanner du code sans que votre application ait besoin de demander l'autorisation d'accéder à l'appareil photo, tout en préservant la confidentialité des utilisateurs. Pour ce faire, elle délègue la tâche de scan du code aux services Google Play et ne renvoie que les résultats du scan à votre application (vidéo 1). Tout le traitement des images a lieu sur l'appareil, et Google ne stocke pas les résultats ni les données d'image. L'API est compatible avec les mêmes formats de code que l' API ML Kit Barcode Scanning et renvoie le même Barcode objet.

Cette API est idéale pour les applications qui nécessitent un scan de code transparent sans avoir besoin d'une interface utilisateur ni d'une expérience de caméra personnalisées. 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 scanner de code Google de scanner automatiquement les codes-barres éloignés de l'appareil photo. Lorsque les utilisateurs pointent leur appareil sur un code-barres, le scanner le détecte et effectue un zoom dessus de manière intelligente. Il n'est donc plus nécessaire d'ajuster le zoom manuellement, ce qui rend le scan de code-barres plus rapide, plus précis et plus accessible (voir la vidéo 2).

Vidéo 1. Intégration du scanner 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 ML Kit Barcode Scanning.

Si vous avez des questions, si vous souhaitez signaler un bug ou si vous 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

  1. Dans votre fichier settings.gradle de premier niveau, incluez le dépôt Maven de Google et le dépôt central Maven dans sous le bloc dependencyResolutionManagement :

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. 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éralement app/build.gradle :

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. 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 ou si vous ne demandez pas de téléchargements explicites, et si le module de scanner n'est pas déjà installé pour un autre cas d'utilisation, les services Google Play le téléchargent lors de sa première utilisation.

Scanner un code

Pour scanner un code-barres, procédez comme suit.

  1. Facultatif : Configurez le scanner 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 QR codes, créez un GmsBarcodeScannerOptions objet 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 illustré 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();
  2. Obtenez une instance de GmsBarcodeScanner, comme illustré 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);
  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érez le Barcode résultant.

    Kotlin

    val rawValue: String? = barcode.rawValue

    Java

    String rawValue = barcode.getRawValue();