Files
VdcScore/docs/03_PROJETO_ANDROID.md

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 como clubs, 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.