Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La API de Google Code Scanner proporciona una solución completa para escanear códigos sin necesidad de que tu app solicite permiso de la cámara, a la vez que preserva la privacidad del usuario. Esto se logra delegando la tarea de escanear el código a los Servicios de Google Play y devolviendo solo los resultados del escaneo a tu app (video 1).
Todo el procesamiento de imágenes se realiza en el dispositivo, y Google no almacena los resultados ni los datos de las imágenes. La API admite los mismos formatos de código que la API de ML Kit Barcode Scanning y devuelve el mismo objeto Barcode.
Esta API es ideal para las apps que requieren un escaneo de códigos sin inconvenientes y sin necesidad de una IU o experiencia de cámara personalizadas. 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ódigos de Google escanee automáticamente códigos de barras que estén lejos de la cámara. Cuando los usuarios apunten sus dispositivos a un código de barras, el escáner lo detectará de forma inteligente y acercará la imagen. Esto elimina la necesidad de ajustar el zoom manualmente, lo que hace que el escaneo de códigos de barras sea más rápido, preciso y accesible (consulta el video 2).
Video 1: Integración del escáner de códigos 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 ML Kit Barcode Scanning.
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:
Puedes configurar tu app para que los Servicios de Google Play descarguen automáticamente el módulo del escáner en el dispositivo mientras tu app se instala desde Play Store.
También puedes verificar de forma explícita la disponibilidad del módulo del escáner y solicitar la 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 tiempo de instalación ni solicitas descargas explícitas, y el módulo del escáner aún no está instalado para otro caso de uso, los Servicios de Google Play descargarán el módulo del escáner la primera vez que se use.
Cómo escanear un código
Sigue estos pasos para escanear un código de barras.
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 aumentar su velocidad. Por ejemplo, para detectar solo códigos QR y Aztec, crea un objeto GmsBarcodeScannerOptions como el del siguiente ejemplo:
De forma predeterminada, el zoom automático está desactivado. Para habilitar la función de zoom automático a partir de la versión 16.1.0, llama a enableAutoZoom() como se muestra en el siguiente ejemplo de código.
Kotlin
valoptions=GmsBarcodeScannerOptions.Builder().setBarcodeFormats(...).enableAutoZoom()// available on 16.1.0 and higher.build()
Java
GmsBarcodeScannerOptionsoptions=newGmsBarcodeScannerOptions.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
valscanner=GmsBarcodeScanning.getClient(this)// Or with a configured options// val scanner = GmsBarcodeScanning.getClient(this, options)
Java
GmsBarcodeScannerscanner=GmsBarcodeScanning.getClient(this);// Or with a configured options// GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
Llama a startScan() para solicitar un análisis 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});
[null,null,["Última actualización: 2025-09-04 (UTC)"],[[["\u003cp\u003eThe Google Code Scanner API enables code scanning without requiring camera permission, preserving user privacy by delegating the task to Google Play services.\u003c/p\u003e\n"],["\u003cp\u003eIt supports various code formats, returns a \u003ccode\u003eBarcode\u003c/code\u003e object, and is ideal for apps needing seamless code scanning without a custom UI.\u003c/p\u003e\n"],["\u003cp\u003eAuto-zoom, available from version 16.1.0, automatically zooms in on barcodes, eliminating the need for manual adjustments and making scanning faster and more accurate.\u003c/p\u003e\n"],["\u003cp\u003eThe API uses an unbundled library downloaded before use and requires Android API level 21 or higher.\u003c/p\u003e\n"],["\u003cp\u003eFor complex use cases requiring a custom UI, the ML Kit Barcode Scanning API is recommended.\u003c/p\u003e\n"]]],[],null,["The Google code scanner API provides a complete solution for scanning code\nwithout requiring your app to request camera permission, while preserving user\nprivacy. This is accomplished by delegating the task of scanning the code to\nGoogle Play services and returning only the scan results to your app (Video 1).\nAll image processing occurs on the device and Google doesn't store the results\nor image data. The API supports the same code formats as the\n[ML Kit Barcode Scanning API](/ml-kit/vision/barcode-scanning) and returns the\nsame [`Barcode`](/android/reference/com/google/mlkit/vision/barcode/common/Barcode)\nobject.\n\nThis API is ideal for apps that require seamless code scanning without the need\nfor a custom UI or camera experience. The implementation resides entirely within\nGoogle Play services, ensuring minimal impact on the size of your app.\n\nStarting with version 16.1.0, you can enable auto-zoom to allow the Google code\nscanner to automatically scan barcodes that are far away from the camera. When\nusers point their devices at a barcode, the scanner will intelligently detect\nand zoom in on the barcode. This eliminates the need for manual zoom\nadjustments, making barcode scanning faster, more accurate and more accessible\n(see Video 2).\n\n|------------------------------------------|---------------------------|\n| | |\n| Video 1. Google code scanner integration | Video 2. Auto-zoom effect |\n\n\u003cbr /\u003e\n\nFor more complex use cases that require a custom UI, we recommend using the\n[ML Kit Barcode Scanning API](/ml-kit/vision/barcode-scanning) directly.\n\nIf you have questions, want to submit a bug, or need assistance, check the\n[ML Kit community page](/ml-kit/community).\n| This API uses an unbundled library that must be downloaded before use. See [this guide](/ml-kit/tips/installation-paths) for more information.\n\nBefore you begin This API requires Android API level 21 or above. Make sure that your app's build file uses a `minSdkVersion` value of 21 or higher.\n\nTo prepare your app, complete the steps in the following sections.\n\nConfigure your app\n\n1. In your top-level `settings.gradle` file, include\n [Google's Maven repository](https://maven.google.com/web/index.html) and\n [Maven central repository](https://search.maven.org/artifact) in under the\n `dependencyResolutionManagement` block:\n\n dependencyResolutionManagement {\n repositories {\n google()\n mavenCentral()\n }\n }\n\n2. Add the Google Play services dependency for the `play-services-code-scanner`\n SDK to your module's Gradle build file, which is commonly `app/build.gradle`:\n\n dependencies {\n implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'\n }\n\n3. You can configure your app to have Google Play services automatically\n download the scanner module to the device while your app is installed from\n the Play Store.\n\n \u003capplication ...\u003e\n ...\n \u003cmeta-data\n android:name=\"com.google.mlkit.vision.DEPENDENCIES\"\n android:value=\"barcode_ui\"/\u003e\n ...\n \u003c/application\u003e\n\n You can also explicitly check the scanner module availability and request\n download through Google Play services [ModuleInstallClient\n API](https://developers.google.com/android/guides/module-install-apis).\n\n If you don't enable install-time module downloads or request explicit\n downloads---and the scanner module isn't already installed for another\n use case---Google Play services downloads the scanner module the first\n time it's used.\n\nScan a code\n\nImplement the following steps to scan a barcode.\n\n1. Optional: Configure the code scanner.\n\n If you know which barcode formats you expect to read, you can improve the\n speed of the barcode detector by configuring it to only detect those\n formats. For example, to detect only Aztec code and QR codes, build a\n [`GmsBarcodeScannerOptions`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScannerOptions.Builder)\n object as in the following example: \n\n Kotlin \n\n ```kotlin\n val options = GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(\n Barcode.FORMAT_QR_CODE,\n Barcode.FORMAT_AZTEC)\n .build()\n ```\n\n Java \n\n ```java\n GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(\n Barcode.FORMAT_QR_CODE,\n Barcode.FORMAT_AZTEC)\n .build();\n ```\n\n By default, auto-zoom is turned off. To enable auto-zoom functionality\n starting in version 16.1.0, call `enableAutoZoom()` as shown in the\n following code example. \n\n Kotlin \n\n ```kotlin\n val options = GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(...)\n .enableAutoZoom() // available on 16.1.0 and higher\n .build()\n ```\n\n Java \n\n ```java\n GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(...)\n .enableAutoZoom() // available on 16.1.0 and higher\n .build();\n ```\n2. Get an instance of [`GmsBarcodeScanner`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScanner),\n as shown in the code example:\n\n Kotlin \n\n ```kotlin\n val scanner = GmsBarcodeScanning.getClient(this)\n // Or with a configured options\n // val scanner = GmsBarcodeScanning.getClient(this, options)\n ```\n\n Java \n\n ```java\n GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);\n // Or with a configured options\n // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);\n ```\n3. Request a code scanning by calling [`startScan()`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScanner#startScan()).\n\n Kotlin \n\n ```kotlin\n scanner.startScan()\n .addOnSuccessListener { barcode -\u003e\n // Task completed successfully\n }\n .addOnCanceledListener {\n // Task canceled\n }\n .addOnFailureListener { e -\u003e\n // Task failed with an exception\n }\n ```\n\n Java \n\n ```java\n scanner\n .startScan()\n .addOnSuccessListener(\n barcode -\u003e {\n // Task completed successfully\n })\n .addOnCanceledListener(\n () -\u003e {\n // Task canceled\n })\n .addOnFailureListener(\n e -\u003e {\n // Task failed with an exception\n });\n ```\n4. Handle the resulting [`Barcode`](/android/reference/com/google/mlkit/vision/barcode/common/Barcode).\n\n Kotlin \n\n ```kotlin\n val rawValue: String? = barcode.rawValue\n ```\n\n Java \n\n ```java\n String rawValue = barcode.getRawValue();\n ```"]]