Escáner de código de Google (Beta)

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

  1. En el archivo settings.gradle de nivel superior, incluye el repositorio Maven de Google y el repositorio central de Maven en el bloque dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. 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 ser app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
    }
    
  3. 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();