A API Google Code Scanner oferece uma solução completa para ler códigos
sem exigir que seu app solicite a permissão de câmera, preservando a privacidade
do usuário. Isso é feito delegando a tarefa de leitura do código para
os 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
ou os dados de imagem. A API oferece suporte aos mesmos formatos de código da
API de leitura de código de barras do Kit de ML e retorna o
mesmo objeto Barcode
.
Essa API é ideal para apps que exigem a leitura de código sem a necessidade de uma interface ou experiência de câmera personalizada. A implementação fica totalmente dentro dos Serviços do Google Play, garantindo o impacto mínimo no tamanho do 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 leia automaticamente códigos de barras que estão longe da câmera. Quando os usuários apontarem os dispositivos para um código de barras, o leitor vai detectar e ampliar o código de barras de forma inteligente. Isso elimina a necessidade de ajustes manuais de zoom, tornando a leitura de código de barras mais rápida, precisa e acessível (consulte o Vídeo 2).
Vídeo 1. Integração do 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 a API de leitura de código de barras do Kit de ML diretamente.
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.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
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' }
É possível configurar o app para que o Google Play Services faça o download automático do módulo do 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>
Também é possível verificar explicitamente a disponibilidade do módulo do scanner e solicitar o download usando a API ModuleInstallClient do Google Play Services.
Se você não ativar os downloads de módulo no momento da instalação ou solicitar downloads explícitos e o módulo do scanner ainda não estiver instalado para outro caso de uso, o Google Play Services vai fazer o download do módulo do scanner na primeira vez que ele for usado.
Ler um código
Siga as etapas abaixo para ler 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 códigos QR, 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 fica 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 abaixo.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 a leitura de um 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();