Начиная с Android 14 в Android Dynamic Performance Framework (ADPF) доступен новый режим энергопотребления GAME, который позволяет настраивать производительность телефона во время игры. GAME указывает Power HAL, что игровое приложение находится на переднем плане. Это позволяет Power HAL применять стратегии управления питанием во время игры, чтобы обеспечить стабильную и улучшенную производительность.
Чтобы сократить время загрузки игр, в Android 13 добавлен новый режим энергопотребления GAME_LOADING в ADPF. GAME_LOADING указывает, находится ли приложение игры в состоянии загрузки, чтобы HAL питания мог обеспечить ускорение загрузки. Это позволяет HAL питания принимать меры по повышению производительности, которые могут ускорить загрузку игры.
На этой странице рассказывается, как игровое приложение передает информацию о состоянии игры в HAL питания, как настроить HAL питания, чтобы использовать его на своих устройствах, и как протестировать реализацию HAL питания.
Обнаружение режима питания и уведомления
В этом разделе описано, как менеджер питания обрабатывает режимы GAME и GAME_LOADING.
Режим энергопотребления "Игры"
Новый режим энергопотребления GAME в Android 14 указывает сервису управления питанием, что пользователь играет в игру. Когда Power HAL получает уведомление о режиме GAME, он может регулировать энергопотребление, чтобы повысить производительность, снизить температуру и продлить время работы от батареи во время игры.
На рисунке ниже показано, как информация передается в HAL питания, чтобы указать режим питания GAME:
Рисунок 1. Поток информации, указывающий на то, что игра запущена.
Режим энергопотребления GAME всегда задается для приложений с appCategory
GAME в AndroidManifest.xml.
Режим энергопотребления GAME_LOADING
Режим ускоренной загрузки определяет, когда приложение находится в состоянии загрузки, и уведомляет об этом HAL питания. В Android 13 появился новый статус игры isLoading, который можно использовать в API для разработчиков.
Для этого используется новый режим энергопотребления GAME_LOADING в Power Manager Service, который уведомляет Power HAL о состоянии игры верхнего уровня. Когда Power HAL получает уведомление о состоянии загрузки игры, он может скорректировать настройки производительности платформы и тактовую частоту ЦП, что приводит к сокращению времени загрузки.
Чтобы указать, что игра загружается, приложение игры использует игровую панель для установки состояния isLoading в Game Manager. Менеджер игр передает это состояние сервису Менеджера игр, который использует setPowerMode с новым режимом энергопотребления GAME_LOADING, чтобы вызвать сервис Менеджера энергопотребления. Режим питания GAME_LOADING сообщает Power HAL, что игра находится в состоянии загрузки, чтобы Power HAL мог обеспечить ускорение загрузки.
На рисунке ниже показан поток информации от приложения к HAL Power для указания состояния загрузки:
Рисунок 2. Поток информации, указывающий на то, что игра загружается.
На игровой панели пользователи могут включать и отключать функцию ускорения загрузки с помощью параметра "Производительность". Параметр "Производительность" по умолчанию отключен.
Настройка Power HAL с помощью GAME и GAME_LOADING
Чтобы использовать режимы GAME и GAME_LOADING, производители оборудования должны настроить реализацию Power HAL.
Поскольку управление питанием и повышение производительности зависят от аппаратного обеспечения, эталонные реализации режимов GAME и GAME_LOADING не будут доступны до выпуска эталонной реализации для устройства Google Pixel.
Чтобы повысить производительность в режимах GAME и GAME_LOADING, производители оригинального оборудования могут реализовать следующие меры:
- Стабилизация частоты кадров
- Увеличьте тактовую частоту процессора.
- Временно снизить температурное регулирование
- Присвоить более высокий приоритет ЦП активной мобильной игре.
- Уменьшение ускорения процессора, настроенного для обычных приложений (не игр)
- Оптимизировать стратегию распределения мощности, связанную с температурой.
Как протестировать реализацию режима GAME
Чтобы проверить реализацию режима GAME, используйте тесты с префиксом testGamePowerMode_ в GameManagerServiceTests.java.
Как протестировать реализацию GAME_LOADING
Чтобы проверить реализацию режима GAME_LOADING, используйте android.gamemanager.cts.GameManagerTest#testSetGameContext.
Этот тест проверяет, вызывает ли GameManager::setGameContext() с isLoading
контекстом режим загрузки игры в HAL питания в режиме производительности.