Scanner di codici Google (solo Android)

L'API Google Code Scanner fornisce una soluzione completa per la scansione dei codici senza che la tua app richieda l'autorizzazione di accesso alla fotocamera, preservando al contempo la privacy degli utenti. Ciò viene delegato delegando l'attività di scansione del codice a Google Play Services e restituendo solo i risultati della scansione per la tua app. Tutte le elaborazioni di immagini avvengono sul dispositivo e Google non memorizza i risultati o i dati di immagine. L'API supporta gli stessi formati di codice dell'API ML Kit Barcode Scanning e restituisce lo stesso oggetto Barcode.

Questa API è ideale per le app che devono semplicemente scansionare un codice e non richiedono un'esperienza personalizzata con la UI o con la fotocamera. L'implementazione risiede interamente in Google Play Services, pertanto non ha un impatto significativo sulle dimensioni della tua app. Per i casi d'uso più complessi che richiedono un'interfaccia utente personalizzata, utilizza direttamente l'API ML Kit Barcode Scanning.

Se hai domande, vuoi segnalare un bug o hai bisogno di assistenza, consulta la pagina della community del ML Kit.

Prima di iniziare

Per preparare la tua app, completa i passaggi nelle sezioni seguenti.

Configura la tua app

  1. Nel file di primo livello settings.gradle, includi il repository Maven di Google e il repository centrale Maven nel blocco dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Aggiungi la dipendenza Google Play Services per l'SDK play-services-code-scanner al file di build Gradle del tuo modulo, che in genere è app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0'
    }
    
  3. Puoi configurare la tua app per il download automatico del modulo scanner sul dispositivo da parte di Google Play Services mentre l'app è installata dal Play Store.

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

    Puoi anche controllare esplicitamente la disponibilità del modulo scanner e richiedere il download tramite l'API ModuleInstallClient di Google Play Services.

    Se non abiliti i download del modulo al momento dell'installazione o richiedi un download esplicito, Google Play Services scaricherà il modulo dello scanner la prima volta che viene utilizzato, se non è già stato installato per un altro caso d'uso.

Scansionare un codice

1. (Facoltativo) Configurare lo scanner di codici

Se sai quali formati di codici a barre prevedi di leggere, puoi migliorare la velocità del rilevatore di codici a barre configurandolo in modo da rilevare solo questi formati. Ad esempio, per rilevare solo il codice azteco e i codici QR, crea un oggetto GmsBarcodeScannerOptions come nell'esempio seguente:

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. Ottieni un'istanza di 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. Richiedi una scansione del codice chiamando 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. Gestire il codice a barre risultante

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();