📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Android Nativo. Recomendado revisar antes de iniciar.

🦇 P12: Batcomputer (Injeção com Hilt & Sensores)

v1.0 — Android Nativo, Kotlin, Injeção de Dependências com Dagger Hilt, SensorManager, Acelerômetro, Giroscópio e HUD Futurista

Série Prática Android Clássico — Projeto 12 de 21


🏛️ Visão Geral & Arquitetura Visual

O projeto Batcomputer simula o terminal tático do Cavaleiro das Trevas combinando a arquitetura moderna de Injeção de Dependências com Dagger Hilt à telemetria de sensores físicos de hardware do smartphone. A aplicação injeta instâncias desacopladas de SensorManager, processa vetores tridimensionais (eixos X, Y e Z) do Acelerômetro e Giroscópio do aparelho em tempo real e desenha uma interface HUD neon que reage com animações à inclinação, aceleração e impactos físicos.

Fluxo Visual do Batcomputer com Sensores e Hilt

📁 Estrutura de Pastas Anti-Colisão

Os módulos Hilt, serviços de sensores e telas estão contidos na subpasta canônica mobile-android-kotlin/:

catalogo_projetos/android_p12_batcomputer_sensores/
├── assets/
│   ├── mockup_batcomputer_fluxo.svg
│   ├── screenshot_01_batcomputer_hud.svg
│   ├── screenshot_02_sensor_impacto.svg
│   └── screenshot_03_filtro_arkham.svg
├── mobile-android-kotlin/
│   ├── app/
│   │   ├── src/
│   │   │   └── main/
│   │   │       ├── java/br/com/curso/batcomputer/
│   │   │       │   ├── di/
│   │   │       │   │   └── SensorModule.kt
│   │   │       │   ├── sensor/
│   │   │       │   │   └── BatSensorManager.kt
│   │   │       │   └── MainActivity.kt
│   │   │       └── res/
│   │   └── build.gradle
│   ├── gradle/
│   ├── build.gradle
│   ├── gradlew
│   ├── settings.gradle
│   └── README.md
└── index.md

🧑‍💼 Engenharia de Software & Especificação Formal

1. Histórias de Usuário (User Stories)

ID Persona Narrativa da Funcionalidade Critério de Aceitação Principal Prioridade
US-01 Batman / Usuário Tático Quero inclinar o celular para qualquer direção e ver o radar tático recalcular os eixos instantaneamente. Leitura contínua dos dados dos eixos X/Y/Z do acelerômetro a 60 FPS. Alta
US-02 Batman / Usuário Tático Quero que o app detecte solavancos ou impactos bruscos (agitar o celular) e dispare um alerta de combate. Detecção de aceleração vetorial resultante superior a 20 m/s². Alta
US-03 Desenvolvedor Mobile Quero injetar o serviço de sensores através do Dagger Hilt para manter o código testável. Anotação @Inject e módulo @InstallIn(SingletonComponent::class). Alta
US-04 Batman / Usuário Tático Quero ver um visor HUD com tipografia neon verde/azul e linhas de varredura estilo terminal militar. Renderização de gráficos vetoriais com sombras e degradês escuros. Média
US-05 Engenheiro de Performance Quero desregistrar os ouvintes de sensor no onPause para impedir consumo de bateria com tela desligada. Execução de sensorManager.unregisterListener() na pausa da Activity. Baixa

2. Requisitos do Sistema

Requisitos Funcionais (RF)

Requisitos Não-Funcionais (RNF)


3. Diagrama de Casos de Uso

flowchart TD
    User([fa:fa-user Batman / Usuário Tático])
    Sensors[(fa:fa-microchip Hardware Sensores)]
    Hilt[(fa:fa-cube Dagger Hilt DI)]

    subgraph AppBatcomputer ["🦇 Batcomputer HUD (mobile-android-kotlin)"]
        UC01["Injetar SensorManager via Hilt"]
        UC02["Registrar Acelerômetro e Giroscópio"]
        UC03["Filtrar Ruído de Leitura (Passa-Baixa)"]
        UC04["Detectar Gesto de Impacto / Agito"]
        UC05["Atualizar Radar Tático Neon"]
    end

    Hilt --> UC01
    UC01 --> UC02
    Sensors --> UC02
    UC02 --> UC03
    UC03 --> UC04
    UC03 --> UC05
    User --> UC04
    UC05 --> User

4. Matriz de Rastreabilidade (RTM)

ID Requisito História de Usuário Artefato de Código Teste de Aceitação
RF-01 US-03 mobile-android-kotlin/app/.../SensorModule.kt testHiltSensorInjection()
RF-02 US-01 mobile-android-kotlin/app/.../BatSensorManager.kt testSensorEventListenerRegistered()
RF-03 US-02 mobile-android-kotlin/app/.../BatSensorManager.kt testShakeDetectionThreshold()
RF-04 US-01, US-04 mobile-android-kotlin/app/.../MainActivity.kt testHudIndicatorsUpdated()
RF-05 US-05 mobile-android-kotlin/app/.../BatSensorManager.kt testUnregisterOnPause()

🛠️ Implementação Guiada (BatSensorManager.kt)

ℹ️ O trecho de código que ficava aqui não correspondia ao código do projeto e foi retirado. Consulte os arquivos em mobile-android-kotlin.


🚀 Como Executar no Laboratório

1. Navegue até a subpasta do projeto

cd catalogo_projetos/android_p12_batcomputer_sensores/mobile-android-kotlin

2. Compile e instale em dispositivo físico com acelerômetro

./gradlew installDebug

🏁 Matriz de Checkpoints de Conclusão

Checkpoint Meta Técnica Critério de Aceite Status
CP-01 Injeção de Dependências Hilt configurado sem erros na geração de código KSP PASS ✅
CP-02 Conexão com SensorManager Acelerômetro emitindo eventos válidos de coordenadas PASS ✅
CP-03 Detecção de Impacto Gesto de tremor (shake) capturado com limiar ajustado PASS ✅
CP-04 Pausa Econômica de Bateria Sensores desconectados no ciclo de vida onPause PASS ✅
CP-05 Suíte de Testes Automatizados Testes de unidade do gerenciador de sensores aprovados PASS ✅