Leitor de código do Google (somente Android)

A API Google Code Scanner é uma solução completa para a leitura de códigos sem exigir que o app solicite a permissão de acesso à câmera, preservando a privacidade. Isso é feito ao delegar a tarefa de ler o código para 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 ou dados de imagem. A API suporta os mesmos formatos de código que a API ML Kit Barcode Scanning e retorna o o mesmo Barcode objeto.

Essa API é ideal para apps que exigem uma verificação de código descomplicada, sem a necessidade para uma IU personalizada ou experiência de câmera. A implementação fica inteiramente dentro Google Play Services, garantindo impacto mínimo sobre o tamanho do seu app.

A partir da versão 16.1.0, você pode ativar o zoom automático para permitir que o código do Google para ler automaticamente os códigos de barras que estiverem longe da câmera. Quando os usuários apontam os dispositivos para um código de barras, o leitor detecta de forma inteligente e aumentar o zoom no código de barras. Isso elimina a necessidade de zoom manual tornando a leitura de código de barras mais rápida, mais precisa e mais 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 do API ML Kit Barcode Scanning diretamente.

Se você tiver dúvidas, quiser informar um bug ou precisar de assistência, verifique 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 Repositório Maven do Google e o repositório Maven central (em inglês) na Bloco dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Adicionar a dependência do Google Play Services para o play-services-code-scanner SDK 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 seja configurado automaticamente faça o download do módulo do scanner no dispositivo enquanto seu aplicativo está instalado 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 Fazer o download pelo ModuleInstallClient do Google Play Services API.

    Se você não ativar os downloads de módulos no momento da instalação ou solicitar conteúdo explícito downloads, e se o módulo do scanner não estiver instalado para outro caso de uso: o Google Play Services faz o download do módulo do scanner primeiro quando é 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 do detector de código de barras configurando-o para detectar apenas formatos. Por exemplo, para detectar apenas o código Aztec e os QR codes, crie uma 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(), como 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, como 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 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
           });
  4. Processe o Barcode resultante.

    Kotlin

    val rawValue: String? = barcode.rawValue

    Java

    String rawValue = barcode.getRawValue();