Files

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

  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.