Scanner di codici Google (beta)

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

Questa API è ideale per le app che devono soltanto scansionare un codice e non richiedono un'esperienza utente o una fotocamera personalizzate. L'implementazione risiede interamente in Google Play Services, pertanto non ha alcun impatto significativo sulle dimensioni dell'app. Per casi d'uso più complessi che richiedono un'interfaccia utente personalizzata, utilizza direttamente l'API ML Barbarcode Scanning.

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

Prima di iniziare

Per preparare l'app, completa i passaggi indicati nelle sezioni che seguono.

Configura la tua app

  1. Nel file settings.gradle di primo livello, includi il repository Maven di Google e il repository centrale Maven nel 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.0.0-beta3'
    }
    
  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 dello scanner e richiedere il download tramite l'API ModuleInstallClient di Google Play Services.

    Se non attivi i download del modulo al momento dell'installazione o non richiedi il 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 che rilevi 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. Gestisci il codice a barre risultante

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();