![](https://developers-dot-devsite-v2-prod.appspot.com/static/ml-kit/images/code_scanner.gif?authuser=4&hl=es)
La API de Google Code Scanner proporciona una solución completa para escanear códigos sin necesidad de que la app solicite permiso de la cámara y, a la vez, se preserva la privacidad del usuario. Esto se logra delegando la tarea de escanear el código a los Servicios de Google Play y mostrando solo los resultados del análisis a tu app. Todo el procesamiento de imágenes ocurre en el dispositivo y Google no almacena los datos ni los resultados de imagen. La API admite los mismos formatos de código que la API de escaneo de códigos de barras del Kit de AA y muestra el mismo objeto Barcode.
Esta API es ideal para las apps que simplemente necesitan escanear un código y no requieren una IU personalizada ni una experiencia de cámara. La implementación reside por completo dentro de los Servicios de Google Play, por lo que no hay un impacto significativo en el tamaño de la app. Para casos prácticos más complejos que requieren una IU personalizada, usa la API de escaneo de código de barras del Kit de AA directamente.
Si tienes preguntas, deseas enviar un error o necesitas ayuda, consulta la página de la comunidad del Kit de AA.
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 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.0.0-beta3' }
Puedes configurar tu app para que los Servicios de Google Play descarguen automáticamente el módulo de análisis en el dispositivo mientras se instala la app 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 que se descargue a través de la API de ModuleInstallClient de los Servicios de Google Play.
Si no habilitas las descargas del módulo en el momento de la instalación ni solicitas una descarga explícita, los Servicios de Google Play descargarán el módulo del escáner la primera vez que se use, si aún no se instaló para otro caso práctico.
Escanear un código
1. (Opcional) Configura el escáner de códigos
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();
2. Obtener una instancia de 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. Solicita un análisis de código llamando a 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. Controla el Código de barras resultante.
Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();