3.1 KiB
03 - Projeto Android
O projeto principal que reside na pasta base do repositório é uma aplicação nativa Android em Java (VdcScore_Project/VdcScore). Esta é a interface visual que disponibiliza todos os dados extraídos pelo sistema ao utilizador final.
Arquitetura Geral
O projeto Android adota uma arquitetura clássica recomendada pela Google baseada em pacotes funcionais com navegação moderna através do Navigation Component.
A raiz do código localiza-se em app/src/main/java/com/example/vdcscore/:
models/: As classes de dados principais (Club,Game,Jornada,Player). Estes POJOs (Plain Old Java Objects) devem corresponder rigorosamente aos modelos utilizados no projeto Scraper, para que as bibliotecas do Firebase consigam realizar a conversão JSON-para-Objeto (getValue(Model.class)) automaticamente e sem falhas.ui/: Divide-se em vários subpacotes conforme as áreas da aplicação (Fragmentos e ViewModels associados). Encontramos pacotes comoclubs,definicoes,gallery,home,livegames.- Raiz de Autenticação: Ficheiros como
LoginActivity.java,CriarContaActivity.java,RecuperarPasswordActivity.java, e a Activity principal de entrada do Navigation Graph (MainActivity.java).
Tecnologias e Bibliotecas
A lista de dependências completas pode ser consultada em app/build.gradle.kts, destacando-se as seguintes bibliotecas chave:
- ViewBinding: Utilizado para ligação segura das views (elementos XML de layout) diretamente ao código Java, eliminando o antigo e verboso
findViewById(). - Glide (
com.github.bumptech.glide:glide): Responsável pelo carregamento, caching e exibição fluída de imagens remetidas por links, incluindo Logos dos clubes. - Firebase Auth (
libs.firebase.auth): Gere o login e registo na plataforma. - Firebase Realtime Database (
libs.firebase.database): Biblioteca principal para sincronismo de dados de leitura instantânea providenciados pelo scraper. - AndroidX Navigation Component: Gere todo o fluxo de trocas de ecrã (Fragments) através do nav_graph da MainActivity.
Componentes UI Essenciais
Muitos dos ecrãs (como listas de jogos ou classificações) funcionam à base de RecyclerView. Para cada lista, é criado um "Adapter" e um layout XML específico ("item layout").
Interação com a Base de Dados
Em vários pontos (ViewModels ou diretamente nos Fragments), encontram-se instâncias de ValueEventListener anexadas a pontos de referência específicos do Firebase (ex: DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Senior").child("standings");).
Toda a atualização da UI é ativada dentro do callback onDataChange(DataSnapshot snapshot).
Notas Importantes para IA
Warning
Quando pedirem a um Agente de IA para alterar a UI e os cartões de exibição de dados: O Agente deverá SEMPRE verificar e ler primeiro os atributos na classe pertencente ao pacote
models(ex:models/Game.java) para saber exatamente como deve fazer o set/get dos valores nas Views. Não deve inventar getters que não existam ou pressupor que a Firebase tem chaves diferentes.