[Android]Utilizando a biblioteca Zxing para leitura de QrCode em 3 minutos
Em algum momento você pode precisar utilizar um leitor de qrcode em sua app, seja para pagamento, autenticação ou inscrição em um evento por exemplo, então como utilizar?
Antes de mais nada, existem outras bibliotecas destinadas a leitura de barcode e qrcode, mas optei pela Zxing, pois ela é bem utilizada na comunidade e está em constante atualização, significa que não vamos ficar na mão de uma hora pra outra, além do mais é open source e tem uma certa acurácia, sendo completa em scanner de imagens 1D e 2D.
Criando o projeto
Estou utilizando a versão 24 ou Android 7, o Nougat, atenção quanto às permissões de acesso que o Android solicita como utilização de câmera, necessárias para o correto funcionamento de um projeto com a ZXing. Salvo engano a partir do Android 6 Android Marshmallow, necessitam habilitar as permissões para garantir o funcionamento do app. Pode ser incluso no seu arquivo Manifest
<uses-permission Android:name="Android.permission.CAMERA" />
Bom, o repositório da Biblioteca para o qrcode que vamos utilizar pode ser visto aqui https://github.com/journeyapps/zxing-android-embedded
Adicionando as dependências no gradle
E podemos adicionar as dependências no gradle conforme orienta o próprio repositório da lib.
implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
Adicione as dependências ao seu projeto, como no momento da escrita do artigo estou utilizando a versão da lib correspondente a 4.1.0:
E logo após sincronize o repositório para completar a instalação. A partir daí na nossa activity_main.xml vamos criar um botão e dar um Id a ele para capturar o Qrcode.
Podemos então setar o botão no MainActivity
btn_leitura.setOnClickListener {
val scanner = IntentIntegrator(this)
scanner.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE)
scanner.setBeepEnabled(false) //retira o beep ao scannear
scanner.initiateScan() // `this` is the current Activity
}
Criando a Activity da scan
Notem que o layout acaba por permanecendo na horizontal. Logo em seguida podemos alterar a orientação pra deixar no layout mais amigável.
Alterando a orientação
Para alterar a orientação, especifique a orientação no seu AndroidManifest.xml
e deixe ManifestMerger
atualizar a definição da Atividade. Agora sim com o screenOrientation:fullSensor e o replace:screenOrientation vamos poder ler apenas o Qrcode e no layout mais agradavel.
A biblioteca também permite que você gere QrCode, há outras funcionalidades para serem exploradas, mas não me ater a elas.
Achei bem tranquila de trabalhar, espero que tenham gostado da minha experiência com Zxing no Android Nativo. O código produzido pode ser obtido neste repositório: https://github.com/dannyserena/qrcodeapp