Android 14 以降では、Android Dynamic Performance Framework(ADPF)の GAME
という新しい電力モードを使って、ゲーム使用時のスマートフォンのパフォーマンスをカスタマイズできます。GAME
は Power HAL にゲームアプリがフォアグラウンドであることを通知します。この通知によって、Power HAL はゲームプレイ時の電源管理戦略を導入し、ユーザー エクスペリエンスを安定させ、パフォーマンスを高めることができます。
ゲームの読み込み時間を改善するため、Android 13 では ADPF に GAME_LOADING
という名前の新しい電力モードが導入されています。GAME_LOADING
はゲームアプリが読み込み状態にあるかどうかを通知して、Power HAL が読み込みブーストを提供できるようにします。この通知により、Power HAL はゲームの読み込みを高速化できるパフォーマンス ブースト対策を提供できます。
このページでは、ゲームアプリが Power HAL にゲーム ステータスを渡す方法、デバイスで利用できるように Power HAL を構成する方法、Power HAL 実装をテストする方法について説明します。
電力モードの検出と通知
このセクションでは、Power Manager が GAME
モードと GAME_LOADING
モードをどのように処理するかについて説明します。
GAME 電力モード
Android 14 の新しい電力モードである GAME
は、Power Manager サービスにユーザーがゲームをプレイしていることを通知します。Power HAL は、GAME
モードの通知を受け取ると、ゲームのプレイ中に電力を調整できます。これにより、パフォーマンスが向上して温度が下がり、バッテリー駆動時間が長くなります。
次の図は、GAME
電力モードを通知するために Power HAL に流れる情報のフローを示しています。
図 1. ゲームプレイ中であることを通知する情報フロー
GAME
電力モードは、AndroidManifest.xml
の appCategory
が GAME
であるアプリでは常に設定されます。
GAME_LOADING 電力モード
読み込みブーストモードは、ゲームアプリが読み込み状態にあるときにそれを検出して Power HAL に通知します。Android 13 では、デベロッパー向けの API に isLoading
という新しいゲーム ステータスが導入されています。このゲーム状態は、Power Manager サービスの新しい GAME_LOADING
電力モードを使用して、トップレベルのゲーム状態を Power HAL に通知します。Power HAL は、ゲーム読み込み状態の通知を受け取ると、プラットフォームのパフォーマンス設定と CPU クロックレートを調整できます。これにより、読み込み時間が改善されます。
ゲームが読み込み中であることを通知するために、ゲームアプリはゲーム ダッシュボードを使用して Game Manager に isLoading
状態を設定します。Game Manager はこの状態を Game Manager サービスに渡します。このサービスは新しい GAME_LOADING
電力モードで setPowerMode
を使用して Power Manager サービスを呼び出します。GAME_LOADING
電力モードは、ゲームが読み込み状態にあることを Power HAL に通知し、Power HAL が読み込みブーストを提供できるようにします。
次の図は、読み込み状態の通知における、アプリから Power HAL への情報のフローを示しています。
図 2. ゲームが読み込み状態にあることを通知する情報フロー
ユーザーはゲーム ダッシュボードを使用して、パフォーマンス設定で読み込みブースト機能をオンまたはオフにできます。パフォーマンス設定はデフォルトではオフになっています。
GAME と GAME_LOADING を使用して Power HAL をカスタマイズする
GAME
モードと GAME_LOADING
モードを活用するには、OEM は Power HAL の実装をカスタマイズする必要があります。電源管理とパフォーマンス ブーストはハードウェアに固有であるため、Google Pixel デバイスのリファレンス実装がリリースされるまで、GAME
モードと GAME_LOADING
モードのリファレンス実装は提供されません。
GAME
モードと GAME_LOADING
モードのパフォーマンス向上のために、OEM は次の対策を組み合わせて実装できます。
- フレームレートを安定化する
- CPU クロック速度を上げる
- 温度スロットリングを一時的に軽減する
- フォアグラウンド ゲームアプリの CPU 優先度を上げる
- 通常のゲーム以外のアプリ用に調整された CPU ブーストを削減する
- 温度関連の電力供給戦略を最適化する
GAME モードの実装をテストする
GAME
モードの実装をテストするには、GameManagerServiceTests.java
の testGamePowerMode_
という接頭辞が付いたテストを使用します。
GAME_LOADING 実装をテストする
GAME_LOADING
モードの実装をテストするには、android.gamemanager.cts.GameManagerTest#testSetGameContext
を使用します。このテストでは、isLoading
コンテキストを持つ GameManager::setGameContext()
がパフォーマンス モードのときに Power HAL でゲーム読み込みモードを呼び出すかどうかが検証されます。