Wyższa wydajność w grach

Od Androida 14 w ramach dynamicznego interfejsu wydajności Androida (ADPF) dostępny jest nowy tryb oszczędzania energii o nazwie GAME, który umożliwia dostosowanie wydajności telefonu podczas grania. GAME wskazuje Power HAL, że aplikacja gry znajduje się na pierwszym planie. Dzięki temu interfejs HAL do zarządzania energią może stosować strategie zarządzania energią podczas grania, aby zapewnić użytkownikowi stabilną i lepszą wydajność.

Aby poprawić czas wczytywania gry, w Androidzie 13 wprowadziliśmy w ADPF nowy tryb zasilania o nazwie GAME_LOADING. GAME_LOADING wskazuje, czy aplikacja z grą jest w stanie wczytywania, aby interfejs Power HAL mógł przyspieszyć wczytywanie. Dzięki temu wartość Power HAL może zaoferować działania zwiększające wydajność, które mogą skrócić czas wczytywania gry.

Na tej stronie opisujemy, jak aplikacja gra przekazuje stan gry do Power HAL. Wyjaśniamy, jak skonfigurować Power HAL, aby korzystać z niej na urządzeniach, oraz jak przetestować implementację Power HAL.

Wykrywanie trybu oszczędzania energii i powiadomienie

W tej sekcji opisaliśmy, jak usługa Power Manager obsługuje tryby GAME i GAME_LOADING.

Tryb zasilania GAME

Nowy tryb zasilania GAME w Androidzie 14 wskazuje usłudze menedżera Power, że użytkownik gra w grę. Gdy interfejs Power HAL otrzyma powiadomienie o trybie GAME, może dostosować zasilanie, aby zwiększyć wydajność, obniżyć temperaturę i wydłużyć czas pracy na baterii podczas grania.

Rysunek poniżej pokazuje przepływ informacji do interfejsu Power HAL w celu wskazania trybu zasilania GAME:

game-mode

Rysunek 1. Przepływ informacji wskazujący, że użytkownik gra w jakąś grę.

Tryb GAME jest zawsze ustawiany w przypadku aplikacji z appCategory of GAMEAndroidManifest.xml.

Tryb oszczędzania energii GAME_LOADING

Tryb przyspieszenia wczytywania wykrywa, kiedy gra jest w stanie wczytywania, i powiadamia o tym Power HAL. Android 13 wprowadza w interfejsie API dla deweloperów nowy stan gry o nazwie isLoading. Ten stan gry korzysta z nowego trybu zasilania GAME_LOADING w usłudze menedżera zasobów, aby powiadamiać HAL Power HAL o stanie gry najwyższego poziomu. Gdy HAL Power HAL otrzyma powiadomienie o stanie wczytywania gry, może dostosować ustawienia wydajności platformy i częstotliwość taktowania procesora, co przekłada się na lepsze czasy wczytywania.

Aby zasygnalizować, że gra się wczytuje, aplikacja używa w panelu gier stanu isLoading w Menedżerze gier. Menedżer gry przekazuje ten stan do usługi menedżera gry, która używa setPowerMode z nowym trybem zasilania GAME_LOADING, aby wywołać usługę menedżera zasilania. Tryb zasilania GAME_LOADING wskazuje na HAL zasilania, że gra jest w stanie załadowania, dzięki czemu ten tryb może zapewnić dodatkowe możliwości wczytywania.

Na rysunku poniżej pokazano przepływ informacji z aplikacji do PowerHAL, aby wskazać stan wczytywania:

Boost

Rysunek 2. Przepływ informacji wskazujący, że gra się wczytuje.

Panel gry umożliwia użytkownikom włączenie lub wyłączenie funkcji przyspieszania wczytywania za pomocą ustawień wydajności. Ustawienie wydajności jest zawsze domyślnie wyłączone.

Dostosowywanie interfejsu Power HAL za pomocą funkcji GAME i GAME_LOADING

Aby korzystać z trybów GAMEGAME_LOADING, producenci OEM muszą dostosować implementację interfejsu Power HAL. Tryby GAMEGAME_LOADING nie są dostępne w implementacjach referencyjnych, dopóki nie zostanie opublikowana implementacja referencyjna na urządzeniu Google Pixel.

Aby zwiększyć wydajność w trybie GAMEGAME_LOADING, producenci OEM mogą wdrożyć kombinację tych działań:

  • Stabilizacja liczby klatek
  • Zwiększanie szybkości zegara procesora
  • Tymczasowo zmniejszyć ograniczanie temperatury
  • Przypisz wyższą priorytetyzację procesora aplikacji gry na pierwszym planie.
  • Zmniejsz poziom przyspieszenia procesora dla zwykłych aplikacji, które nie są grami
  • Optymalizacja strategii rozdziału mocy związanej z termiką

Testowanie implementacji trybu gry

Aby przetestować implementację trybu GAME, użyj testów z prefiksem testGamePowerMode_ w pliku GameManagerServiceTests.java.

Testowanie implementacji GAME_LOADING

Aby przetestować implementację trybu GAME_LOADING, użyj android.gamemanager.cts.GameManagerTest#testSetGameContext. Ten test sprawdza, czy GameManager::setGameContext() w kontekście isLoading wywołuje tryb wczytywania gry w Power HAL w trybie wydajności.