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 でゲーム読み込みモードを呼び出すかどうかが検証されます。