ZXing para Kotlin: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

ZXing para Kotlin: Guia completo para escanear QR Codes e códigos de barras

No mundo atual de aplicativos móveis e automação de processos, a capacidade de ler rapidamente informações de QR Codes e códigos de barras tornou-se um padrão de facto. A biblioteca ZXing (pronuncia-se "zebra crossing") é uma ferramenta poderosa e de código aberto que permite aos desenvolvedores integrar facilmente funcionalidades de reconhecimento e geração de códigos unidimensionais (EAN, UPC, Code 128) e bidimensionais (QR, Data Matrix, Aztec) em seus aplicativos.

Este guia é voltado para desenvolvedores que usam Kotlin e desejam dominar o ZXing, desde a instalação básica até a criação de scanners avançados com otimização de desempenho. Vamos abordar não apenas os cenários padrão, mas também os detalhes que costumam gerar erros para iniciantes.

1. O que é e para que serve?

ZXing é uma biblioteca de processamento de imagens especializada em decodificar e codificar códigos de barras. Criada pelo Google e mantida pela comunidade, sua principal vantagem é a multiplataforma (Java/Kotlin, C++, JavaScript, Python) e o suporte a uma vasta gama de formatos: desde QR Codes clássicos até códigos industriais específicos como PDF417.

Por que usar ZXing em Kotlin? Primeiro, porque é o padrão ouro no desenvolvimento Android. Segundo, a biblioteca oferece classes prontas para trabalhar com a câmera (via CameraX ou Camera2), eliminando a necessidade de escrever código de baixo nível para captura de vídeo. Terceiro, o ZXing funciona não apenas com vídeo ao vivo, mas também com imagens estáticas (arquivos da galeria), ampliando os cenários de uso: desde escanear recibos até reconhecer códigos em embalagens de produtos na logística.

2. Instalação

Para Kotlin (Android), a instalação é feita através do sistema de build Gradle. Adicione as seguintes dependências no arquivo build.gradle (Módulo: app):

dependencies {
    // Biblioteca principal do ZXing
    implementation("com.google.zxing:core:3.5.3")
    // Módulo adicional para trabalhar com a câmera (recomendado)
    implementation("com.journeyapps:zxing-android-embedded:4.3.0")
}

Se você estiver usando Kotlin Multiplatform ou Kotlin puro no servidor (Ktor), precisará apenas do módulo core:

implementation("com.google.zxing:core:3.5.3")

Para aplicativos desktop (JVM), adicione a dependência no Maven ou Gradle de forma similar. Após sincronizar o projeto, a biblioteca estará pronta para uso.

3. Primeiros passos — exemplo mínimo funcional

A maneira mais simples de testar o ZXing é iniciar uma Activity embutida para escaneamento. Para isso, basta chamar uma Intent. Abaixo está o código mínimo para uma Activity Android em Kotlin:

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions

class MainActivity : AppCompatActivity() {

    // Registra o contrato para iniciar o scanner
    private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
        if (result.contents == null) {
            Toast.makeText(this, "Escaneamento cancelado", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(this, "Resultado: ${result.contents}", Toast.LENGTH_LONG).show()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Configuração das opções de escaneamento
        val options = ScanOptions()
        options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) // Apenas QR
        op                    

Recommendations