![](https://developers.google.cn/static/ml-kit/images/code_scanner.gif?authuser=8&hl=de)
Die Google Codescanner API bietet eine vollständige Lösung zum Scannen von Codes, ohne dass Ihre App Kameraberechtigungen anfordern muss. Die Nutzerdaten müssen dabei geschützt bleiben. Dazu delegieren Sie die Aufgabe, den Code an Google Play-Dienste zu scannen und nur die Scanergebnisse an Ihre App zurückzugeben. Die gesamte Bildverarbeitung findet auf dem Gerät statt und Google speichert die Ergebnisse oder Bilddaten nicht. 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 nur einen Code scannen müssen und keine benutzerdefinierte UI oder Kameraerfahrung erfordern. Die Implementierung erfolgt vollständig in den Google Play-Diensten, sodass dies keine bedeutenden Auswirkungen auf die Größe Ihrer App hat. Bei komplexeren Anwendungsfällen, die eine benutzerdefinierte UI erfordern, können Sie die ML Kit Barcode Scanning API direkt verwenden.
Wenn Sie Fragen haben, einen Fehler melden 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 Anwendung konfigurieren
Fügen Sie in der Datei
settings.gradle
auf oberster Ebene das Maven-Repository von Google und das Maven Central Repository unter demdependencyResolutionManagement
-Block ein:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Fügen Sie die Google Play-Dienstabhängigkeit für das
play-services-code-scanner
SDK der Gradle-Build-Datei Ihres Moduls hinzu. Diese ist in der Regelapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3' }
Sie können Ihre App so konfigurieren, dass Google Play-Dienste das Scannermodul automatisch auf das Gerät herunterladen, während 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 überprüfen und den Download über die ModuleInstallClient API der Google Play-Dienste anfordern.
Wenn Sie die Installation des Installationsmoduls nicht aktivieren oder einen expliziten Download anfordern, laden die Google Play-Dienste das Scannermodul zum ersten Mal herunter, wenn es nicht bereits für einen anderen Anwendungsfall installiert wurde.
Code scannen
1. Optional: Codescanner konfigurieren
Wenn Sie wissen, welche Barcodeformate Sie lesen möchten, können Sie die Geschwindigkeit des Barcode-Detektors verbessern, indem Sie ihn so konfigurieren, dass er nur diese Formate erkennt. Wenn Sie beispielsweise nur Azteken-Code 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();
2. Instanz von GmsBarcodeScanner abrufen
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. Durch Aufrufen von startScan() einen Codescannen anfordern
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. Umgang mit dem resultierenden Barcode
Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();