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 para o 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, consulte 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.gradlede nível superior, inclua o repositório Maven do Google e o repositório central do Maven no bloco- dependencyResolutionManagement:- dependencyResolutionManagement { repositories { google() mavenCentral() } }
- Adicione a dependência do Google Play Services para o SDK do - play-services-code-scannerao 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 - GmsBarcodeScannerOptionscomo 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 - Barcoderesultante.- Kotlin- val rawValue: String? = barcode.rawValue - Java- String rawValue = barcode.getRawValue(); 
