GNSS Sky Viewer é um aplicativo Android desenvolvido como um componente de UI customizado para visualizar, em tempo real, a projeção da esfera celeste e os satélites dos sistemas de navegação GPS, GLONASS, BeiDou e Galileo. O app oferece uma interface rica e interativa, permitindo que o usuário filtre e identifique os satélites com base em sua constelação e status de uso.
Este projeto foi construído do zero, com foco em boas práticas de desenvolvimento Android, otimização de performance no desenho de custom views e uma experiência de usuário (UI/UX) limpa e temática.
- Visualização em Tempo Real: Desenha a posição dos satélites na esfera celeste (azimute e elevação) assim que os dados do hardware de GPS são atualizados.
- Suporte Multi-Constelação: Identifica e diferencia satélites dos 4 maiores sistemas de navegação globais:
- 🛰️ GPS (Azul)
- 🛰️ GLONASS (Vermelho)
- 🛰️ BeiDou (Amarelo)
- 🛰️ Galileo (Verde)
- Identificação de Status: Satélites usados ativamente para o cálculo da localização (
Fix) são exibidos preenchidos, enquanto os apenas visíveis são mostrados com contorno. - Painel de Configurações: Ao tocar na esfera, um painel de configurações permite filtrar a visualização por constelação e optar por mostrar ou ocultar os satélites não utilizados no
Fix. - Persistência de Dados: As configurações de filtro são salvas usando
SharedPreferences, mantendo as preferências do usuário mesmo após fechar o app. - UI Dinâmica e Informativa:
- Legenda Inteligente: Exibe uma legenda de cores apenas para as constelações que estão visíveis na tela.
- Contadores em Tempo Real: Mostra o número de satélites visíveis e em uso, atualizados dinamicamente com os filtros aplicados.
- Interface Imersiva:
- Fundo Estrelado: Um fundo dinâmico com um gradiente espacial e estrelas geradas aleatoriamente para uma experiência mais temática.
- Layout Responsivo: O app respeita as áreas de sistema (barra de status) para uma visualização limpa em tela cheia.
- Componente Customizado: O coração do app, o
SkyView, é um componenteViewtotalmente customizado e reutilizável, com atributos próprios que podem ser definidos via XML (comoapp:gridColor).
| Tela Principal | Painel de Configurações |
|---|---|
- Linguagem: Java
- SDK: Android SDK
- UI:
- Views Customizadas (desenho com
CanvasePaint) - Layouts XML (FrameLayout, ConstraintLayout)
- Recursos
Drawable(Gradientes) - AlertDialog e Material Components
- Views Customizadas (desenho com
- APIs do Android:
LocationManagerGnssStatus.Callback
- Persistência:
SharedPreferences
- Clone este repositório para a sua máquina local.
- Abra o projeto com o Android Studio.
- Aguarde o Gradle sincronizar todas as dependências.
- Conecte um dispositivo Android físico via USB (o emulador pode não fornecer dados de satélite).
- Certifique-se de que a Localização (GPS) do dispositivo esteja ativada.
- Clique em Run 'app'.
Nota: Para um bom teste, execute o aplicativo em um local com céu aberto para garantir a recepção do sinal GNSS.
- Rafael Queiroz Santos
Projeto desenvolvido para a disciplina de Concepção e Desenvolvimento de Aplicações para Dispositivos Móveis do professor Jorge Alberto Prado de Campos.