La API de escáner de código de Google proporciona una solución completa para escanear códigos sin que tu app solicite permiso para usar la cámara, a la vez que preserva la privacidad del usuario. Para ello, se delega la tarea de escanear el código a los Servicios de Google Play y se muestran solo los resultados del análisis a tu app (Video 1).
Todo el procesamiento de imágenes se lleva a cabo en el dispositivo, y Google no almacena los resultados ni los datos de imágenes. La API admite los mismos formatos de código que la API de Barcode Scanning del kit de AA y muestra el mismo objeto Barcode
.
Esta API es ideal para las apps que requieren un escaneo de código fluido sin la necesidad de una IU personalizada ni una experiencia de cámara. La implementación reside por completo en los Servicios de Google Play, lo que garantiza un impacto mínimo en el tamaño de tu app.
A partir de la versión 16.1.0, puedes habilitar el zoom automático para permitir que el escáner de código de Google escanee automáticamente códigos de barras que se encuentren lejos de la cámara. Cuando los usuarios apuntan sus dispositivos a un código de barras, el escáner detecta y acerca el código de barras de forma inteligente. Esto elimina la necesidad de realizar ajustes de zoom manuales, lo que hace que el escaneo de códigos de barras sea más rápido, preciso y accesible (ver Video 2).
Video 1: Integración del escáner de código de Google | Video 2: Efecto de zoom automático |
Para casos de uso más complejos que requieren una IU personalizada, recomendamos usar directamente la API de Barcode Scanning del kit de AA.
Si tienes preguntas, deseas informar un error o necesitas ayuda, consulta la página de la comunidad del ML Kit.
Antes de comenzar
Para preparar tu app, completa los pasos que se indican en las siguientes secciones.
Cómo configurar tu app
En el archivo
settings.gradle
de nivel superior, incluye el repositorio de Maven de Google y el repositorio central de Maven en el bloquedependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Agrega la dependencia de los Servicios de Google Play para el SDK de
play-services-code-scanner
al archivo de compilación de Gradle de tu módulo, que suele serapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
Puedes configurar tu app para que los Servicios de Google Play descarguen automáticamente el módulo de escáner en el dispositivo mientras tu app se instala desde Play Store.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
También puedes verificar de forma explícita la disponibilidad del módulo de análisis y solicitar su descarga a través de la API de ModuleInstallClient de los Servicios de Google Play.
Si no habilitas las descargas de módulos en el momento de la instalación o solicitas descargas explícitas, y el módulo de escáner no está instalado para otro caso de uso, los Servicios de Google Play descargan el módulo de análisis la primera vez que se usa.
Escanear un código
Implementa los siguientes pasos para escanear un código de barras.
Opcional: Configura el escáner de código.
Si sabes qué formatos de códigos de barras leerás, puedes configurar el detector de códigos de barras para que solo detecte esos formatos a fin de mejorar su velocidad. Por ejemplo, para detectar solo códigos QR y Aztec, crea un objeto
GmsBarcodeScannerOptions
como el del siguiente ejemplo: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();
De forma predeterminada, el zoom automático está desactivado. Para habilitar la funcionalidad de zoom automático a partir de la versión 16.1.0, llama a
enableAutoZoom()
como se muestra en el siguiente código de ejemplo.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();
Obtén una instancia de
GmsBarcodeScanner
, como se muestra en el ejemplo de código: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);
Llama a
startScan()
para solicitar un escaneo de código.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 });
Controla la
Barcode
resultante.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();