Scanner di codici Google (solo Android)

L'API Google Code Scanner fornisce una soluzione completa per la scansione del codice senza che l'app richieda l'autorizzazione di accesso alla fotocamera, tutelando al contempo la privacy degli utenti. A tale scopo, delega a Google Play Services l'attività di scansione del codice e restituisce solo i risultati della scansione alla tua app (Video 1). L'intera elaborazione delle immagini avviene sul dispositivo e Google non memorizza i risultati o i dati delle immagini. 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 richiedono una scansione del codice senza interruzioni, senza bisogno di un'interfaccia utente personalizzata o un'esperienza con la fotocamera. L'implementazione risiede interamente all'interno di Google Play Services, garantendo un impatto minimo sulle dimensioni della tua app.

A partire dalla versione 16.1.0, puoi abilitare lo zoom automatico per consentire allo scanner di codici Google di scansionare automaticamente i codici a barre distanti dalla fotocamera. Quando gli utenti puntano il dispositivo verso un codice a barre, lo scanner rileva il codice a barre e lo aumenta in modo intelligente. Questo elimina la necessità di regolazioni manuali dello zoom, rendendo la scansione dei codici a barre più veloce, precisa e più accessibile (vedi Video 2).

Video 1. Integrazione dello scanner di codici Google Video 2. Effetto zoom automatico

Per casi d'uso più complessi che richiedono un'interfaccia utente personalizzata, consigliamo di utilizzare direttamente l'API ML Kit Barcode Scanning.

In caso di domande, se vuoi inviare un bug o se hai bisogno di assistenza, visita la pagina della community ML Kit.

Prima di iniziare

Per preparare l'app, completa i passaggi nelle sezioni seguenti.

Configura la tua app

  1. Nel tuo file settings.gradle di primo livello, includi il Repository Maven di Google e il repository centrale Maven all'interno del blocco dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Aggiungi la dipendenza di 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.1.0'
    }
    
  3. Puoi configurare la tua app in modo che Google Play Services scarichi automaticamente il modulo dello scanner sul dispositivo 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'APIModuleInstallClient di Google Play Services.

    Se non abiliti i download dei moduli al momento dell'installazione o non richiedi download espliciti, e il modulo Scanner non è già installato per un altro caso d'uso, Google Play Services scarica il modulo scanner la prima volta che viene utilizzato.

Scansiona un codice

Implementa i seguenti passaggi per eseguire la scansione di un codice a barre.

  1. (Facoltativo) Configura 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();
    

    Per impostazione predefinita, lo zoom automatico è disattivato. Per attivare la funzionalità di zoom automatico a partire dalla versione 16.1.0, chiama enableAutoZoom() come mostrato nel codice di esempio che segue.

    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. Ottieni un'istanza di GmsBarcodeScanner, come mostrato nell'esempio di codice:

    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 il numero 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. Gestisci la risorsa Barcode risultante.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();