2.2 KiB
2.2 KiB
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
- 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. Rodarpython -m unittest discover -s testse confirmar falhas pelas rotas ausentes. Implementarcontrole_pc.pye integrar Handler emkiosk-server.py, repetir testes. - Escrever teste JVM
tests/YuvFrameTest.java: quadro YUV 2x2 com strides diferentes deve virar NV21[16,32,48,64,150,100]. Compilar contraYuvFrame.javae observar falha antes de implementar conversor. CriarControleRemoto.javapara 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. - 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.
- 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.