Google Code-Scanner (nur Android)

Die Code Scanner API von Google bietet eine umfassende Lösung zum Scannen von Code, ohne dass Ihre App eine Kameraberechtigung anfordern muss. Gleichzeitig wird der Datenschutz für Nutzer gewahrt. Dazu wird das Scannen des Codes an die Google Play-Dienste delegiert und nur die Scanergebnisse an Ihre App zurückgegeben (Video 1). Die gesamte Bildverarbeitung erfolgt auf dem Gerät und Google speichert weder die Ergebnisse noch die Bilddaten. Die API unterstützt dieselben Codeformate wie die ML Kit Barcode Scanning API und gibt dasselbe Barcode-Objekt zurück.

Diese API eignet sich ideal für Apps, die einen nahtlosen Codescan ohne benutzerdefinierte UI oder Kamera erfordern. Die Implementierung erfolgt vollständig in den Google Play-Diensten, sodass die Größe der App nur minimal beeinflusst wird.

Ab Version 16.1.0 können Sie den automatischen Zoom aktivieren, damit der Codescanner von Google Barcodes, die weit von der Kamera entfernt sind, automatisch scannen kann. Wenn Nutzer ihr Gerät auf einen Barcode zeigen, erkennt der Scanner den Barcode intelligent und zoomt heran. Dadurch entfällt die Notwendigkeit für manuelle Zoomanpassungen. Das Scannen von Barcodes wird dadurch schneller, genauer und besser zugänglich (siehe Video 2).

Video 1. Google Code Scanner-Integration Video 2. Effekt „Automatischer Zoom“

Für komplexere Anwendungsfälle, die eine benutzerdefinierte UI erfordern, empfehlen wir die direkte Verwendung der ML Kit Barcode Scanning API.

Wenn Sie Fragen haben, einen Fehler melden möchten oder Hilfe benötigen, rufen Sie die ML Kit-Community-Seite auf.

Hinweis

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre App vorzubereiten.

Eigene App konfigurieren

  1. Fügen Sie in der Datei settings.gradle auf oberster Ebene das Maven-Repository von Google und das Maven Central Repository unter dem dependencyResolutionManagement-Block ein:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Fügen Sie die Abhängigkeit der Google Play-Dienste für das play-services-code-scanner SDK in die Gradle-Build-Datei Ihres Moduls ein (in der Regel app/build.gradle):

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. Du kannst deine App so konfigurieren, dass Google Play-Dienste das Scannermodul automatisch auf das Gerät herunterladen, während deine App aus dem Play Store installiert wird.

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    Du kannst die Verfügbarkeit des Scanners auch explizit prüfen und einen Download über die ModuleInstallClient API der Google Play-Dienste anfordern.

    Wenn Sie weder das Herunterladen von Modulen bei der Installation aktivieren noch explizite Downloads anfordern und das Scannermodul für einen anderen Anwendungsfall noch nicht installiert ist, laden die Google Play-Dienste das Scannermodul bei der ersten Verwendung herunter.

Code scannen

Führen Sie die folgenden Schritte aus, um einen Barcode zu scannen.

  1. Optional: Konfigurieren Sie den Codescanner.

    Wenn Sie wissen, welche Barcodeformate Sie lesen möchten, können Sie die Geschwindigkeit des Barcode-Detektors verbessern, indem Sie ihn so konfigurieren, dass nur diese Formate erkannt werden. Wenn Sie beispielsweise nur Aztec-Code und QR-Codes erkennen möchten, erstellen Sie wie im folgenden Beispiel ein GmsBarcodeScannerOptions-Objekt:

    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();
    

    Der automatische Zoom ist standardmäßig deaktiviert. Um ab Version 16.1.0 den automatischen Zoom zu aktivieren, rufen Sie enableAutoZoom() auf, wie im folgenden Codebeispiel gezeigt.

    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. Rufen Sie eine Instanz von GmsBarcodeScanner ab, wie im Codebeispiel gezeigt:

    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. Fordern Sie ein Codescannen an, indem Sie startScan() aufrufen.

    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. Verarbeitet das resultierende Barcode.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();