No Android 14, um novo modo de energia chamado GAME
no Framework de Performance Dinâmica do Android (ADPF) permite a personalização da
performance do smartphone durante o uso de jogos. GAME indica à HAL de energia que um app de jogo está em primeiro plano. Essa indicação permite que a HAL de energia adote estratégias de gerenciamento de energia quando um jogo está sendo jogado, para que o usuário tenha uma performance estável e aprimorada.
Para melhorar o tempo de carregamento de um jogo, o Android
13 introduz um novo modo de energia chamado GAME_LOADING
no ADPF. GAME_LOADING indica se um app de jogo está no estado de carregamento para que a HAL de energia possa fornecer um aumento de carregamento. Essa indicação permite que a HAL de energia forneça medidas de aumento de performance que podem acelerar o tempo de carregamento do jogo.
Esta página descreve como o app de jogo transmite o estado do jogo para a HAL de energia, explica como configurar a HAL de energia para aproveitar o recurso nos dispositivos e como testar a implementação da HAL de energia.
Detecção e notificação do modo de energia
Esta seção descreve como o Power Manager processa os modos GAME e GAME_LOADING.
Modo de energia GAME
O novo modo de energia GAME no Android 14 indica a
o serviço Power Manager
que o usuário está jogando. Quando a HAL de energia é notificada do modo GAME, ela pode ajustar a energia para melhorar a performance, diminuir a temperatura e prolongar a duração da bateria enquanto o jogo está sendo jogado.
A figura a seguir explica o fluxo de informações para a HAL de energia para indicar o modo de energia GAME:
Figura 1. Fluxo de informações para indicar que um jogo está sendo jogado.
O modo de energia GAME é sempre definido para apps com uma appCategory
de GAME em AndroidManifest.xml.
Modo de energia GAME_LOADING
O modo de aumento de carregamento funciona detectando quando um app de jogo está em um estado de carregamento e notificando a HAL de energia. O Android 13
introduz um novo estado de jogo chamado isLoading na API voltada para o desenvolvedor.
Esse estado de jogo usa o novo GAME_LOADING
modo de energia no serviço Power Manager para notificar a HAL de energia sobre o estado de jogo de nível
superior. Depois que a HAL de energia é notificada do estado de carregamento do jogo, ela pode ajustar as configurações de performance da plataforma e a velocidade do clock da CPU, o que resulta em tempos de carregamento aprimorados.
Para indicar que um jogo está carregando, o app de jogo usa o painel de jogos para definir
um isLoading
estado no Game Manager. O Game Manager transmite esse estado para o serviço Game
Manager, que usa setPowerMode
com o novo modo de energia GAME_LOADING
para invocar o serviço Power Manager. O modo de energia GAME_LOADING
indica à HAL de energia que o jogo está em um estado de carregamento
para que a HAL de energia possa fornecer um aumento de carregamento.
A figura a seguir explica o fluxo de informações do app para a HAL de energia para indicar o estado de carregamento:
Figura 2. Fluxo de informações para indicar que um jogo está em um estado de carregamento.
O painel de jogos permite que os usuários ativem ou desativem o recurso de aumento de carregamento com a configuração de performance. A configuração de performance sempre é desativada por padrão.
Personalizar a HAL de energia usando GAME e GAME_LOADING
Para aproveitar os modos GAME e GAME_LOADING, os OEMs precisam
personalizar a implementação da HAL de energia.
Como o gerenciamento de energia e o aumento de performance são específicos do hardware, nenhuma implementação de referência
para os modos GAME ou GAME_LOADING é disponibilizada até que
uma implementação de referência para o dispositivo Google Pixel seja lançada.
Para melhorar a performance em um modo GAME e GAME_LOADING, os OEMs podem escolher
implementar uma combinação das seguintes medidas:
- Estabilizar o frame rate
- Aumentar a velocidade do clock da CPU
- Reduzir temporariamente a limitação de temperatura
- Atribuir uma prioridade de CPU mais alta ao app de jogo em primeiro plano
- Reduzir o aumento da CPU ajustado para apps normais que não são de jogos
- Otimizar a estratégia de distribuição de energia relacionada a térmicos
Testar a implementação do modo GAME
Para testar a implementação do modo GAME, use testes prefixados com testGamePowerMode_ em GameManagerServiceTests.java.
Testar a implementação do GAME_LOADING
Para testar a implementação do modo GAME_LOADING, use android.gamemanager.cts.GameManagerTest#testSetGameContext.
Esse teste verifica se GameManager::setGameContext() com um contexto isLoading invoca o modo de carregamento do jogo na HAL de energia no modo performance.