Google Code-Scanner (nur Android)

Die Google Code Scanner API bietet eine Komplettlösung zum Scannen von Codes, ohne dass Ihre App die Berechtigung zum Zugriff auf die Kamera anfordern muss. Gleichzeitig wird der Datenschutz für Nutzer gewahrt. Dazu wird die Aufgabe, den Code zu scannen, an die Google Play-Dienste delegiert und nur die Scanergebnisse werden 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 ist ideal für Apps, die ein nahtloses Scannen von Codes erfordern, ohne dass eine benutzerdefinierte Benutzeroberfläche oder Kamera erforderlich ist. Die Implementierung erfolgt vollständig in den Google Play-Diensten, sodass die Größe Ihrer App nur minimal beeinflusst wird.

Ab Version 16.1.0 können Sie den automatischen Zoom aktivieren, damit der Google-Codescanner Barcodes, die weit von der Kamera entfernt sind, automatisch scannt. Wenn Nutzer ihre Geräte auf einen Barcode richten, wird dieser vom Scanner erkannt und herangezoomt. Dadurch entfällt die Notwendigkeit, den Zoom manuell anzupassen, was das Scannen von Barcodes schneller, genauer und zugänglicher macht (siehe Video 2).

Video 1. Integration des Google-Code-Scanners Video 2. Automatischer Zoomeffekt

Für komplexere Anwendungsfälle, die eine benutzerdefinierte UI erfordern, empfehlen wir, die ML Kit Barcode Scanning API direkt zu verwenden.

Wenn Sie Fragen haben, einen Fehler melden möchten oder Unterstützung 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 Google Play-Dienste-Abhängigkeit für das play-services-code-scanner SDK der Gradle-Build-Datei Ihres Moduls hinzu, die normalerweise app/build.gradle heißt:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. Sie können Ihre App so konfigurieren, dass die Google Play-Dienste das Scannermodul automatisch auf das Gerät herunterladen, wenn Ihre App aus dem Play Store installiert wird.

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

    Sie können die Verfügbarkeit des Scannermoduls auch explizit prüfen und den Download über die ModuleInstallClient API der Google Play-Dienste anfordern.

    Wenn Sie weder den Download des Moduls bei der Installation aktivieren noch explizite Downloads anfordern und das Scannermodul nicht bereits für einen anderen Anwendungsfall 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 Code-Scanner.

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

    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. Wenn Sie die Funktion ab Version 16.1.0 aktivieren möchten, 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 einen Code-Scan an, indem Sie startScan() anrufen.

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

    Kotlin

    val rawValue: String? = barcode.rawValue

    Java

    String rawValue = barcode.getRawValue();