Leitor de código do Google (somente Android)

A API Google Code Scanner oferece uma solução completa para ler código sem exigir que o app solicite a permissão da câmera, preservando a privacidade do usuário. Isso é feito delegando a tarefa de verificar o código ao Google Play Services e retornar apenas os resultados da verificação ao app (vídeo 1). Todo o processamento de imagens ocorre no dispositivo, e o Google não armazena os resultados nem os dados da imagem. A API oferece suporte aos mesmos formatos de código que a API ML Kit Barcode Scanning e retorna o mesmo objeto Barcode.

Essa API é ideal para apps que exigem uma leitura de código integrada, sem a necessidade de uma interface personalizada ou uma experiência com a câmera. A implementação fica totalmente no Google Play Services, garantindo um 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 os 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 leitor detecta e aumenta o zoom 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 (consulte 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 ML Kit Barcode Scanning.

Se você tiver dúvidas, quiser enviar um bug ou precisar de ajuda, confira 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

  1. No arquivo settings.gradle de nível superior, inclua o repositório Maven do Google e o repositório Maven central (links em inglês) no bloco dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. 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'
    }
    
  3. Você pode configurar seu app para que o Google Play Services faça o download automático do módulo do scanner no dispositivo enquanto o app estiver 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 do scanner e solicitar o download pela API ModuleInstallClient do Google Play Services.

    Se você não ativar os downloads do 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.

  1. 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 códigos Aztec e 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();
    

    O zoom automático fica desativado por padrão. Para ativar esse recurso na versão 16.1.0 e mais recentes, 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();
    
  2. 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);
    
  3. Solicite uma verificação 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
           });
    
  4. Gerencie o Barcode resultante.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();