No Android 14 e versões mais recentes, um novo modo de energia chamado GAME
no Android Dynamic Performance Framework (ADPF) permite a personalização do
desempenho do smartphone durante jogos. GAME
indica à HAL de energia que um
app de jogo está em primeiro plano. Essa indicação permite que o HAL de energia
adote estratégias de gerenciamento de energia quando um jogo está sendo jogado, para que o usuário
tenha uma experiência de desempenho estável e melhorada.
Para melhorar o tempo de carregamento de um jogo, o Android
13 apresenta 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
ofereça medidas de aumento de desempenho que podem acelerar o tempo de carregamento
do jogo.
Esta página descreve como o app transmite o estado do jogo para a HAL de energia, explica como configurar essa HAL para aproveitá-la nos seus dispositivos e como testar a implementação dessa HAL.
Detecção e notificação do modo de economia de bateria
Esta seção descreve como o Gerenciador de energia processa os modos GAME
e GAME_LOADING
.
Modo liga/desliga GAME
O novo modo de energia GAME
no Android 14 indica ao
Serviço Power Manager
que o usuário está jogando. Quando o HAL de energia é notificado sobre o modo
GAME
, ele pode ajustar a energia para melhorar o desempenho, reduzir 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 o 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 um 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
apresenta um novo estado de jogo chamado isLoading
na API voltada para desenvolvedores.
Esse estado do jogo usa o novo modo de energia GAME_LOADING
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 sobre o estado de carregamento do jogo, ela
pode ajustar as configurações de desempenho da plataforma e a taxa do clock da CPU, o que resulta
em tempos de carregamento melhores.
Para indicar que um jogo está sendo carregado, o app usa o Painel de jogo para definir
um estado isLoading
no Gerenciador de jogos. O Game Manager transmite esse estado ao 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 o 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 do jogo permite que os usuários ativem ou desativem o recurso de aumento de carregamento com a configuração de desempenho. A configuração de desempenho está sempre desativada por padrão.
Personalizar o HAL de energia usando GAME e GAME_LOADING
Para aproveitar os modos GAME
e GAME_LOADING
, os OEMs precisam
personalizar a implementação do HAL de energia.
Como o gerenciamento de energia e a otimização de desempenho são específicos do hardware, nenhuma implementação
de referência para os modos GAME
ou GAME_LOADING
será disponibilizada até que
uma implementação de referência para o dispositivo Google Pixel seja lançada.
Para melhorar o desempenho em um modo GAME
e GAME_LOADING
, os OEMs podem implementar
uma combinação das seguintes medidas:
- Estabilidade da taxa de frames
- Aumentar a velocidade do clock da CPU
- Reduzir temporariamente o limite 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 ao calor
Testar a implementação do modo GAME
Para testar a implementação do modo GAME
, use testes com o prefixo
testGamePowerMode_
em GameManagerServiceTests.java
.
Testar a implementação de 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 de desempenho.