Maximizar a compliance de teste com invariantes do WindowManager

Para implementar uma experiência do usuário consistente e de alta qualidade e evitar problemas que levam a falhas no conjunto de testes de compatibilidade (CTS), implemente os princípios principais do WindowManager (WM) descritos aqui. Esses princípios ajudam a garantir a conformidade com as diretrizes de qualidade de apps para carros. Esses princípios se aplicam a:

  • Versões do Android que usam uma arquitetura de várias janelas, que começou no Android 14 e continuou no Android 15 com a interface escalonável.

  • Implementações personalizadas e da interface escalonável do Android

Ao aplicar os princípios, você evita proativamente a maioria dos problemas de conformidade do CTS e de testes funcionais.

Terminologia

invariante
Uma condição lógica que permanece verdadeira durante a execução de um app que leva à integridade estrutural. Uma invariante atua como uma regra de limite.
atividade especial
Também conhecida como atividade de interface automática ou atividade de interface do sistema, essa atividade crítica do app tem uma área dedicada na tela que está sempre visível ou visível na maior parte do tempo, mesmo quando o usuário pressiona Início,como uma navegação principal ou um app de cluster.
atividade padrão
Qualquer atividade de app padrão que não seja essencial para a interface principal do sistema, como um app de mídia de terceiros iniciado na grade de apps.

Princípios do WM

Para maximizar a conformidade com o CTS, aplique esses princípios nas implementações do WM.

Usar uma configuração estável na inicialização da atividade

Inicie cada nova atividade padrão com uma única transição do WM que define a posição, o tamanho e a densidade finais. Não acione uma segunda transição que mude a configuração da janela da tarefa subjacente (como tamanho ou densidade) imediatamente após a primeira, porque isso causa uma mudança de configuração imediatamente após a criação da atividade.

Mover atividades padrão para o estado parado

Quando o usuário navega até a tarefa ou cena inicial, é necessário mover todas as atividades padrão em execução para o estado parado para manter o ciclo de vida previsível do app Android exigido pelos testes do CTS. Para mais informações sobre as expectativas do ciclo de vida do app em ambientes automotivos, consulte Impedir o uso enquanto as restrições de experiência do usuário estiverem ativas.

Impedir a obstrução do conteúdo da atividade padrão

Não desenhe decorações personalizadas ou elementos de interface que obstruam o conteúdo de uma atividade padrão. Se você desenhar sobreposições personalizadas (como uma barra de controle de temperatura personalizada), informe as dimensões ao sistema com inserções SystemOverlay. No Android 15 e versões mais recentes, use DecorPanel na interface escalonável. Os apps dependem dessas inserções para organizar o conteúdo com segurança.

Ocultar sobreposições na solicitação do modo imersivo

Quando um app solicita o modo imersivo, é necessário ocultar todos os elementos de interface personalizados temporários e remover as inserções SystemOverlay. Obstruções persistentes interferem nas expectativas de pixels de um app. Para detalhes sobre como os apps solicitam e processam o modo imersivo, consulte Barras de sistema, modo imersivo e renderização de ponta a ponta.

Aplicar cantos arredondados apenas no nível da tela

Aplique cantos arredondados apenas no nível da tela usando as configurações de recursos adequadas em frameworks/base. Não aplique cantos arredondados arbitrários à superfície de uma atividade padrão.

Isso interfere nos testes de elementos de interface. Como uma medida temporária, é possível especificar o mesmo raio de canto arredondado para a tela que você aplica à superfície da atividade padrão.

Manter o tamanho do app na solicitação do modo imersivo

Quando um app solicita a entrada no modo imersivo, não redimensione a janela do app. Isso aciona uma mudança de configuração disruptiva. Em vez disso, para maximizar o app, ofereça um botão de tela cheia controlado pelo usuário.