W Androidzie 14 wprowadzono nowy tryb zasilania o nazwie GAME
w ramach Android Dynamic Performance Framework (ADPF), który umożliwia dostosowanie
wydajności telefonu podczas grania. Tryb GAME informuje Power HAL, że aplikacja do gier jest na pierwszym planie. Dzięki temu Power HAL może stosować strategie zarządzania energią podczas grania, co zapewnia użytkownikowi stabilną i lepszą wydajność.
Aby skrócić czas wczytywania gry, w Androidzie
13 wprowadzono nowy tryb zasilania o nazwie GAME_LOADING
w ADPF. Tryb GAME_LOADING informuje, czy aplikacja do gier jest w stanie wczytywania, dzięki czemu Power HAL może zapewnić przyspieszenie wczytywania. Dzięki temu Power HAL może stosować środki zwiększające wydajność, które mogą przyspieszyć wczytywanie gry.
Z tej strony dowiesz się, jak aplikacja do gier przekazuje stan gry do Power HAL, jak skonfigurować Power HAL, aby korzystać z niego na swoich urządzeniach, oraz jak przetestować implementację Power HAL.
Wykrywanie trybu zasilania i powiadomienia
W tej sekcji opisujemy, jak Menedżer zasilania obsługuje tryby GAME i GAME_LOADING.
Tryb zasilania GAME
Nowy tryb zasilania GAME w Androidzie 14 informuje
usługę Menedżera zasilania
, że użytkownik gra. Gdy 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.
Na ilustracji poniżej przedstawiono przepływ informacji do Power HAL, który wskazuje tryb zasilania GAME:
Rysunek 1. Przepływ informacji wskazujący, że trwa gra.
Tryb zasilania GAME jest zawsze ustawiany w przypadku aplikacji z wartością appCategory
GAME w polu AndroidManifest.xml.
Tryb zasilania GAME_LOADING
Tryb przyspieszenia wczytywania działa przez wykrywanie, kiedy aplikacja do gier jest w stanie wczytywania, i powiadamianie o tym Power HAL. W Androidzie 13
wprowadzono nowy stan gry o nazwie isLoading w interfejsie API dla deweloperów.
Ten stan gry używa nowego GAME_LOADING
trybu zasilania w usłudze Menedżera zasilania, aby powiadomić Power HAL o stanie gry najwyższego
poziomu. Gdy Power HAL otrzyma powiadomienie o stanie wczytywania gry, może dostosować ustawienia wydajności platformy i szybkość zegara procesora, co skutkuje krótszym czasem wczytywania.
Aby wskazać, że gra się wczytuje, aplikacja do gier używa panelu gier do ustawienia
isLoading
stanu w Menedżerze gier. Menedżer gier przekazuje ten stan do usługi Menedżera gier, która używa setPowerMode
z nowym GAME_LOADING
trybem zasilania, aby wywołać usługę Menedżera zasilania. Tryb zasilania GAME_LOADING informuje Power HAL, że gra jest w stanie wczytywania, dzięki czemu Power HAL może zapewnić przyspieszenie wczytywania.
Na ilustracji poniżej przedstawiono przepływ informacji z aplikacji do Power HAL, który wskazuje stan wczytywania:
Rysunek 2. Przepływ informacji wskazujący, że gra jest w stanie wczytywania.
Panel gier umożliwia użytkownikom włączanie i wyłączanie funkcji przyspieszenia wczytywania za pomocą ustawienia wydajności. Ustawienie wydajności jest domyślnie wyłączone.
Dostosowywanie Power HAL za pomocą trybów GAME i GAME_LOADING
Aby korzystać z trybów GAME i GAME_LOADING, producenci OEM muszą
dostosować implementację Power HAL.
Ponieważ zarządzanie energią i zwiększanie wydajności zależą od sprzętu, implementacje referencyjne
trybów GAME i GAME_LOADING nie są dostępne do czasu udostępnienia
implementacji referencyjnej dla urządzenia Google Pixel.
Aby zwiększyć wydajność w trybach GAME i GAME_LOADING, producenci OEM mogą
wdrożyć kombinację tych środków:
- Stabilizowanie liczby klatek
- Zwiększ taktowanie procesora
- Tymczasowe zmniejszanie ograniczania termicznego
- Przypisywanie wyższego priorytetu procesora do aplikacji do gier na pierwszym planie
- Zmniejszanie przyspieszenia procesora dostosowanego do zwykłych aplikacji innych niż gry
- Optymalizowanie strategii dystrybucji energii związanej z temperaturą
Testowanie implementacji trybu GAME
Aby przetestować implementację trybu GAME, użyj testów z prefiksem testGamePowerMode_ w pliku GameManagerServiceTests.java.
Testowanie implementacji trybu GAME_LOADING
Aby przetestować implementację trybu GAME_LOADING, użyj android.gamemanager.cts.GameManagerTest#testSetGameContext.
Ten test sprawdza, czy funkcja GameManager::setGameContext() z kontekstem isLoading wywołuje tryb wczytywania gry w Power HAL w trybie wydajności.