A API Google Code Scanner oferece uma solução completa para ler códigos
sem exigir que o app solicite a permissão da câmera, preservando a privacidade do
usuário. Isso é feito ao delegar a tarefa de verificação do código ao Google Play Services e retornar apenas os resultados da verificação ao seu app (Vídeo 1).
Todo o processamento de imagens ocorre no dispositivo, e o Google não armazena os resultados
nem os dados dela. A API é compatível com os mesmos formatos de código da API Barcode Scanning do Kit de ML e retorna o mesmo objeto Barcode
.
Essa API é ideal para apps que exigem a leitura de código sem problemas, sem uma interface personalizada ou experiência de câmera. A implementação é feita inteiramente no Google Play Services, garantindo um impacto mínimo no tamanho do seu app.
A partir da versão 16.1.0, você pode ativar o zoom automático para permitir que o leitor de código do Google leia códigos de barras que estejam longe da câmera. Quando os usuários apontam os dispositivos para um código de barras, o leitor detecta e aumenta o zoom dele de maneira 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 (veja 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 o uso direto da API Barcode Scanning do kit de ML.
Se você tiver dúvidas, quiser informar um bug ou precisar de ajuda, consulte a página da comunidade do Kit de ML.
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 Maven central (link em inglês) no blocodependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Adicione a dependência do Google Play Services para o SDK da
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 do scanner para o dispositivo enquanto ele estiver 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 por meio da 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 fará o download do módulo do scanner na primeira vez que for usado.
Ler um código
Implemente as etapas a seguir para ler um código de barras.
Opcional: configure o leitor de código.
Se você souber quais formatos de código de barras espera ler, poderá melhorar 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();
Acesse 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();