Files
carinha-control-panel/docs/DESIGN.md

2.7 KiB

Controle da Carinha pelo PC

Desenho aprovado no chat em 04/10/2026. O servidor roda no Windows, independente da placa. O Galaxy S10 continua mostrando o rosto em primeiro plano.

Fluxo

servir-local.bat inicia o servidor na porta 8100. O painel /painel permite conectar o celular por ADB, configurar rosto/cor/gestos, volume, gestos automáticos, reação ao som e movimento, sensibilidade e tempo para dormir. Os ajustes persistem em JSON no PC e são aplicados pela página sem recarregar.

O app usa uma única sessão Camera2 frontal para análise e prévia. Quadros YUV são convertidos em JPEG colorido com orientação da câmera e enviados no máximo cinco vezes por segundo, em thread de rede separada. Não abre a página de diagnóstico no celular. O painel mostra a imagem somente quando a transmissão está habilitada; ao desativar ou perder conexão, esconde a imagem antiga. Nenhuma gravação de vídeo ou áudio. O microfone envia somente o nível.

Interfaces

  • /app/config: GET lê; POST valida e salva ajustes. Campos: preview, auto, audio, volume, ouvir, reagir, somlim, somganho, somaltolim, sompausa, somcooldown, movlim, movforte, movcooldown, movolhar.
  • /app/status: POST recebe estado do rosto, microfone e movimento; GET informa telemetria e conectividade com prazo de cinco segundos.
  • /camera/frame: POST recebe JPEG de até 1 MB; GET devolve último quadro somente se transmissão habilitada e quadro recente (até três segundos).
  • /app/connect: POST disponível apenas pelo localhost, com IP IPv4 e porta ADB validados; usa argumentos fixos para conectar e abrir o app apontando ao PC.
  • Rotas existentes /config, /faces, /gestos, /fila mantidas. O painel não consome /fila.

Falhas e validação

Economia de tela adicionada pelo usuário

Configuração economia (padrão true), brilho (0.70), brilhoRepouso (0.08) e repousoTela (30 segundos). O Android aplica brilho à janela do app, restaurando o padrão do sistema ao sair. Inatividade/dormir reduz brilho; som, movimento e comandos restauram. Gestos espontâneos não contam como atividade do usuário. Teste JVM cobre a decisão; teste físico está pendente, conforme REGISTRO.md.

Rede indisponível não bloqueia câmera nem animação; mantém no máximo um quadro pendente. Captura e envio param quando app vai para segundo plano. Painel distingue configuração salva de estado confirmado pelo celular. Testes HTTP reais cobrem persistência, validação, expiração de quadros e isolamento da fila. Teste JVM cobre layout YUV com row/pixel stride. Compilar e verificar assinatura do APK, instalar no S10 conectado e conferir imagem e telemetria pelo servidor.