Od Androida 14 nowy tryb zasilania o nazwie GAME
w Android Dynamic Performance Framework (ADPF) umożliwia dostosowywanie wydajności telefonu podczas grania. GAME
informuje HAL zasilania, że aplikacja do gier jest na pierwszym planie. Ta informacja umożliwia warstwie HAL zasilania stosowanie strategii zarządzania energią podczas gry, dzięki czemu użytkownik może cieszyć się stabilną i lepszą wydajnością.
Aby skrócić czas wczytywania gry, Android 13 wprowadza nowy tryb zasilania o nazwie GAME_LOADING
w ADPF. GAME_LOADING
wskazuje, czy aplikacja z grą jest w stanie wczytywania, aby HAL zasilania mógł zapewnić zwiększenie mocy. Ta informacja umożliwia warstwie HAL zasilania podejmowanie działań zwiększających wydajność, które mogą przyspieszyć wczytywanie gry.
Na tej stronie opisujemy, jak aplikacja z grą przekazuje stan gry do warstwy HAL zasilania, jak skonfigurować warstwę HAL zasilania, aby wykorzystać ją na urządzeniach, oraz jak przetestować implementację warstwy HAL zasilania.
Wykrywanie trybu zasilania i powiadomienia
W tej sekcji opisano, jak Menedżer zasilania obsługuje tryby GAME
i GAME_LOADING
.
Tryb zasilania GRY
Nowy tryb zasilania GAME
w Androidzie 14 informuje usługę zarządzania zasilaniem, że użytkownik gra. Gdy HAL zasilania otrzyma powiadomienie o GAME
trybie, może dostosować zasilanie, aby zwiększyć wydajność, obniżyć temperaturę i wydłużyć czas pracy na baterii podczas gry.
Na poniższym rysunku przedstawiono przepływ informacji do warstwy HAL zasilania, który wskazuje tryb zasilania GAME
:
Rysunek 1. Przepływ informacji wskazujący, że gra jest odtwarzana.
Tryb zasilania GAME
jest zawsze ustawiony w przypadku aplikacji z appCategory
GAME
w AndroidManifest.xml
.
Tryb zasilania GAME_LOADING
Tryb przyspieszonego ładowania działa w ten sposób, że wykrywa, kiedy aplikacja do gier jest w stanie ładowania, i powiadamia o tym warstwę HAL zasilania. W Androidzie 13 wprowadzono nowy stan gry o nazwie isLoading
w interfejsie API dla deweloperów.
Ten stan gry korzysta z nowego GAME_LOADING
trybu zasilania w usłudze Power Manager, aby powiadamiać warstwę HAL zasilania o stanie gry najwyższego poziomu. Gdy warstwa HAL zasilania otrzyma powiadomienie o stanie wczytywania gry, może dostosować ustawienia wydajności platformy i częstotliwość taktowania procesora, co skutkuje krótszym czasem wczytywania.
Aby wskazać, że gra się wczytuje, aplikacja gry używa panelu gier do ustawienia stanu isLoading
w Menedżerze gier. Menedżer gier przekazuje ten stan do usługi Menedżera gier, która używa setPowerMode
z nowym trybem zasilania GAME_LOADING
do wywoływania usługi Menedżera zasilania. GAME_LOADING
Tryb zasilania informuje Power HAL, że gra jest w stanie wczytywania, dzięki czemu Power HAL może zapewnić wzmocnienie wczytywania.
Na poniższym rysunku przedstawiono przepływ informacji z aplikacji do warstwy Power HAL, który wskazuje stan ładowania:
Rysunek 2. Przepływ informacji wskazujący, że gra jest w stanie ładowania.
Panel gier umożliwia użytkownikom włączanie i wyłączanie funkcji przyspieszenia ładowania za pomocą ustawienia wydajności. Ustawienie wydajności jest zawsze domyślnie wyłączone.
Dostosowywanie Power HAL za pomocą GAME i GAME_LOADING
Aby korzystać z trybów GAME
i GAME_LOADING
, producenci OEM muszą dostosować implementację Power HAL.
Zarządzanie energią i zwiększanie wydajności zależą od sprzętu, dlatego implementacje referencyjne trybów GAME
i GAME_LOADING
nie są udostępniane do czasu wydania implementacji referencyjnej dla urządzenia Google Pixel.
Aby zwiększyć wydajność w trybie GAME
i GAME_LOADING
, producenci OEM mogą wdrożyć kombinację tych działań:
- Stabilizowanie liczby klatek
- Zwiększanie szybkości zegara procesora
- Tymczasowe zmniejszenie ograniczenia temperatury
- przypisywać wyższy priorytet procesora aplikacji gry działającej na pierwszym planie;
- Zmniejszenie zwiększenia wydajności procesora dostosowanego do zwykłych aplikacji innych niż gry
- Optymalizacja strategii dystrybucji energii związanej z temperaturą
Testowanie implementacji trybu GAME
Aby przetestować implementację trybu GAME
, użyj testów z prefiksem testGamePowerMode_
w GameManagerServiceTests.java
.
Testowanie implementacji zdarzenia GAME_LOADING
Aby przetestować wdrożenie trybu GAME_LOADING
, użyj android.gamemanager.cts.GameManagerTest#testSetGameContext
.
Ten test sprawdza, czy GameManager::setGameContext()
z isLoading
kontekstem wywołuje tryb ładowania gry w interfejsie HAL zasilania w trybie wydajności.