Leitor de código do Google (Beta)

A API Google Code scanner fornece uma solução completa para ler códigos sem exigir que o app solicite permissão de câmera, preservando a privacidade do usuário. É possível delegar a tarefa de verificar o código no Google Play Services e retornar apenas os resultados da verificação ao app. Todo o processamento de imagens ocorre no dispositivo, e o Google não armazena os resultados ou os dados de imagem. A API é compatível com 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 na IU ou na câmera. A implementação reside inteiramente no Google Play Services, portanto, 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, quiser enviar 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

  1. No arquivo settings.gradle de nível superior, inclua o repositório Maven do Google e o repositório central do Maven 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 o app para que o Google Play Services faça o download automaticamente do módulo do scanner para o dispositivo enquanto o app for instalado pela Play Store.

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    Você também pode conferir 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 de módulos no momento da instalação nem solicitar o download explícito, o Google Play Services fará o download do módulo da verificação pela primeira vez, se ele ainda não tiver sido instalado para outro caso de uso.

Ler um código

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

Se você 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 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();

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

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();