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 Também na biblioteca
msw para TypeScript: guia completo com exemplos práticos
Knex.js para JavaScript (Node.js): guia completo com exemplos práticos
Configuração de aplicações C# (.NET): Microsoft.Extensions.Configuration
Autorização e Autenticação em Rust: Bibliotecas e Ferramentas