![](https://developers-dot-devsite-v2-prod.appspot.com/static/ml-kit/images/code_scanner.gif?authuser=5&hl=it)
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
Nel file
settings.gradle
di primo livello, includi il repository Maven di Google e il repository centrale Maven nel bloccodependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
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' }
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();