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:

val options = GmsBarcodeScannerOptions.Builder()
   
.setBarcodeFormats(
       
Barcode.FORMAT_QR_CODE,
       
Barcode.FORMAT_AZTEC)
   
.build()
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
   
.setBarcodeFormats(
       
Barcode.FORMAT_QR_CODE,
       
Barcode.FORMAT_AZTEC)
   
.build();

2. Receba uma instância de GmsBarcodeScanner

val scanner = GmsBarcodeScanning.getClient(this)
// Or with a configured options
// val scanner = GmsBarcodeScanning.getClient(this, options)
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()

scanner.startScan()
   
.addOnSuccessListener { barcode ->
       
// Task completed successfully
   
}
   
.addOnCanceledListener {
       
// Task canceled
   
}
   
.addOnFailureListener { e ->
       
// Task failed with an exception
   
}
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

val rawValue: String? = barcode.rawValue
String rawValue = barcode.getRawValue();