Files

22 lines
2.2 KiB
Markdown

# Controle pelo PC Implementation Plan
> Execução inline nesta sessão, com executing-plans. O usuário autorizou implementar o desenho.
**Goal:** Controlar rosto, comportamento e câmera frontal do S10 pelo navegador do PC.
**Architecture:** Estender servidor e painel existentes; compartilhar captura Camera2 entre movimento e transmissão JPEG; aplicar configurações na página em tempo real.
**Tech Stack:** Python biblioteca padrão, HTML/CSS/JavaScript, Java Android Camera2, ferramentas Android locais.
**Spec:** DESIGN.md
## Global Constraints
- Windows, porta 8100, Android min API 21. Sem placa, sem novas dependências de execução.
- Rede local, sem gravação, imagem recente, no máximo um quadro pendente.
- Preservar rotas de gestos e aparência. Painel não deve consumir a fila do celular.
## Tarefas
1. [ ] Escrever `tests/test_controle_pc.py`, usando servidor HTTP real com porta efêmera. Verificar POST/GET configuração, persistência em arquivo temporário, rejeição de valores inválidos, telemetria recente, JPEG desativado/expirado, fila preservada. Rodar `python -m unittest discover -s tests` e confirmar falhas pelas rotas ausentes. Implementar `controle_pc.py` e integrar Handler em `kiosk-server.py`, repetir testes.
2. [ ] Escrever teste JVM `tests/YuvFrameTest.java`: quadro YUV 2x2 com strides diferentes deve virar NV21 `[16,32,48,64,150,100]`. Compilar contra `YuvFrame.java` e observar falha antes de implementar conversor. Criar `ControleRemoto.java` para consultar preview e enviar JPEG com timeouts e uma única thread. Integrar ciclo de vida e captura no MainActivity. Compilar APK com SDK/JDK locais e verificar assinatura.
3. [ ] Ampliar painel com câmera, conectividade, ajustes e conexão ADB. Manter rostos e gestos existentes. Aplicar config na carinha e enviar telemetria a cada segundo. Verificar controles com navegador e resposta efetiva no aparelho.
4. [ ] Iniciar servidor local oculto, instalar APK no S10 conectado, abrir app com servidor `http://192.168.1.15:8100`. Testar imagem JPEG recente, rosto/cor alterados, configuração confirmada, desligar preview sem interromper rosto. Atualizar APP.md e launcher. Entregar atalho local e documentação em outputs.