# 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.