A API Google Code Scanner oferece uma solução completa para leitura de códigos
sem exigir que o app solicite permissão da câmera, preservando a privacidade
do usuário. Isso é feito delegando a tarefa de leitura do código aos
serviços do Google Play e retornando apenas os resultados da leitura ao app (Vídeo 1).
Todo o processamento de imagens ocorre no dispositivo, e o Google não armazena os resultados
nem os dados das imagens. A API é compatível com os mesmos formatos de código da API Barcode Scanning do ML Kit e retorna o mesmo objeto Barcode
.
Essa API é ideal para apps que exigem uma leitura de código perfeita sem a necessidade de uma interface personalizada ou experiência de câmera. A implementação reside totalmente no Google Play Services, garantindo um impacto mínimo no tamanho do seu app.
A partir da versão 16.1.0, é possível ativar o zoom automático para permitir que o leitor de código do Google faça a leitura automática de códigos de barras que estão longe da câmera. Quando os usuários apontam os dispositivos para um código de barras, o scanner detecta e amplia o código de forma inteligente. Isso elimina a necessidade de ajustes manuais de zoom, tornando a leitura de códigos de barras mais rápida, precisa e acessível (confira o Vídeo 2).
![]() |
![]() |
Vídeo 1. Integração com o leitor de código do Google | Vídeo 2. Efeito de zoom automático |
Para casos de uso mais complexos que exigem uma interface personalizada, recomendamos usar diretamente a API Barcode Scanning do ML Kit.
Se você tiver dúvidas, quiser enviar um bug ou precisar de ajuda, confira a página da comunidade do ML Kit.
Antes de começar
Para preparar o app, siga as etapas nas seções a seguir.
Configurar o app
No arquivo
settings.gradle
de nível superior, inclua o repositório Maven do Google e o repositório central do Maven no blocodependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Adicione a dependência do Google Play Services para o SDK do
play-services-code-scanner
ao arquivo de build do Gradle do seu módulo, que geralmente éapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
Você pode configurar seu app para que o Google Play Services faça o download automático do módulo de scanner no dispositivo enquanto o app é instalado pela Play Store.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
Você também pode verificar explicitamente a disponibilidade do módulo de scanner e solicitar o download usando a API ModuleInstallClient dos Serviços do Google Play.
Se você não ativar os downloads de módulos no momento da instalação nem solicitar downloads explícitos, e se o módulo de scanner ainda não estiver instalado para outro caso de uso, o Google Play Services vai baixar o módulo de scanner na primeira vez que ele for usado.
Ler um código
Siga estas etapas para fazer a leitura de um código de barras.
Opcional: configure o leitor de códigos.
Se você sabe quais formatos de código de barras espera ler, aumente a velocidade do detector de código de barras configurando-o para detectar apenas esses formatos. Por exemplo, para detectar apenas o código Aztec e os QR codes, crie um objeto
GmsBarcodeScannerOptions
como no exemplo a seguir: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();
Por padrão, o zoom automático está desativado. Para ativar a funcionalidade de zoom automático a partir da versão 16.1.0, chame
enableAutoZoom()
conforme mostrado no exemplo de código a seguir.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();
Receba uma instância de
GmsBarcodeScanner
, conforme mostrado no exemplo 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);
Solicite uma leitura de código chamando
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 });
Processe o
Barcode
resultante.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();