📷 Cap 14: Captura QR: Scanner de Itens
🎯 Objetivo da Aula: Ao final desta aula, você saberá usar a câmera do celular no seu app. Você aprenderá a integrar o Google ML Kit para ler QR Codes, permitindo que o jogador escaneie códigos no mundo real para ganhar itens no jogo.
🏢 O Cenário Prático (Seu Desafio):
Você quer criar um evento de “Caça ao Tesouro”. O desafio é fazer o celular identificar quando o jogador aponta a câmera para um QR Code específico. Se o código for POKE_BOLA, o app deve dar o item para o jogador.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- CameraX: É a biblioteca oficial do Google para facilitar o uso da câmera.
- ML Kit: É o “Cérebro” de visão do Google. Ele consegue ler textos, rostos e QR Codes.
- Permissões: Por segurança, o Android proíbe o uso da câmera sem que o usuário autorize. Você precisa pedir “licença” no arquivo de manifesto.
🎨 Padrão de Permissões
Todas as permissões do sistema devem ser declaradas no arquivo AndroidManifest.xml antes de serem usadas no código Kotlin.
graph TD A[Usuário abre Câmera] --> B{Tem Permissão?} B -->|Não| C[Mostra Janela de Pedido] B -->|Sim| D[Abre Scanner QR]
🏗️ Construindo o Projeto (Checklist Studio)
No seu arquivo AndroidManifest.xml, adicione esta linha antes da tag <application>:
<uses-permission android:name="android.permission.CAMERA" />
📖 Exemplo Passo a Passo: O Verificador de Itens
Crie uma função simples para validar o que a câmera leu:
fun processarCodigo(textoLido: String) {
if (textoLido == "POKE_BOLA") {
println("📦 Você ganhou uma Pokebola!")
} else {
println("❌ Código inválido ou item desconhecido.")
}
}🛠️ Prática Obrigatória 1:
Abra o arquivo AndroidManifest.xml do seu projeto e adicione a permissão de câmera. Pesquise e anote qual a dependência do ML Kit Barcode Scanning que deve ser colocada no build.gradle.
🛠️ Prática Obrigatória 2:
Crie uma função chamada validarIngresso. Se o texto lido for "VIP", o retorno deve ser "Acesso Liberado". Senão, o retorno deve ser "Acesso Negado".
🔑 Gabarito Passo a Passo:
Exercício 1 (Dependência):
implementation("com.google.mlkit:barcode-scanning:17.2.0")
Exercício 2:
fun validarIngresso(codigo: String): String {
return if (codigo == "VIP") {
"Acesso Liberado"
} else {
"Acesso Negado"
}
}📤 Instruções de Entrega (Microsoft Teams):
- Envie o print do seu Manifesto com a permissão.
- Envie o código da função de validação.
- Submeta no canal de tarefas.