Leitor de código do Google (Beta)

A API de leitura de código do Google oferece uma solução completa para a leitura de códigos sem exigir que o app solicite a permissão da câmera, preservando a privacidade do usuário. Isso é realizado com a delegação da tarefa de leitura do código para o Google Play Services e o retorno apenas dos resultados da verificação para o app. Todo o processamento de imagens ocorre no dispositivo, e o Google não armazena os resultados ou os dados de imagem. A API aceita os mesmos formatos de código que a API ML Kit Barcode Scanning e retorna o mesmo objeto Barcode.

Essa API é ideal para apps que simplesmente precisam ler um código e não exigem uma experiência personalizada com a IU ou a câmera. A implementação reside totalmente no Google Play Services, então não há impacto significativo no tamanho do seu app. Para casos de uso mais complexos que exigem uma IU personalizada, use a API ML Kit Barcode Scanning diretamente.

Se você tiver dúvidas ou quiser enviar um bug ou precisar de ajuda, acesse 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 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.0.0-beta3'
    }
    
  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 da 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 do módulo de tempo de instalação ou solicitar o download explícito, o Google Play Services fará o download do módulo do scanner na primeira vez que for usado, se ainda não tiver sido instalado para outro caso de uso.

Ler um código

1. (Opcional) Configurar o leitor de código

Se souber quais formatos de código de barras espera ler, você poderá aumentar 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();

2. Receba uma instância de GmsBarcodeScanner

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 do 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 código de barras resultante

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();