システムの安定性と、Suspend-to-RAM(S2R)や Suspend-to-Disk(S2D)などの低電力状態への移行を確実にするには、電力移行中にオーディオ リソースが適切に管理されることが重要です。
システムが一時停止を開始したときに、アプリが音声入力または出力ストリームを常に解放するとは限りません。アクティブなオーディオ ストリームがあると、オーディオ サブシステムと基盤となるハードウェアがアイドル状態にならず、システムオンチップ(SoC)が深い睡眠に入れないことがあります。これにより、サスペンドの試行が失敗し、消費電力が増加します。
OEM は、サスペンド移行中にアクティブなオーディオ ストリームを処理するために、オーディオ ハードウェア抽象化レイヤ(HAL)の実装内に堅牢なフォールバック メカニズムを実装しなければなりません。これは、アプリの動作に関係なく、プラットフォームの安定性を確保するために不可欠です。
アプリはオーディオ リソースを正しく管理する必要がありますが、システムは基本的な電源状態の切り替えをこれに依存することはできません。オーディオ HAL は、リソースの無効化を強制してシステムがサスペンド状態に移行できるようにするための適切なレイヤです。このアプローチは、堅牢な電源管理におすすめします。
電源管理を実装する
オーディオ HAL で堅牢な電源管理を実装する手順は次のとおりです。
システムの電源状態の変化、特に一時停止への移行を検出します。
システムが一時停止の準備をしているときに、音声ストリーム(入力と出力の両方)がまだアクティブな場合は、介入します。
- ハードウェア出力ストリームをリリースし、オーディオ フレームワークからの受信データを破棄します。
- ハードウェア入力ストリームをリリースし、無音の音声をフレームワークに送信します。
この HAL レベルのアクションにより、アプリがオーディオ リソースを解放していない場合でも、オーディオ ハードウェアがアイドル状態になり、システムが正常に一時停止できるようになります。
システムがサスペンドから復帰するときは、オーディオ サブシステムをアクティブな状態に戻します。これには、以前にミュートされた出力ストリームのミュートを解除し、入力ストリームを再アクティブ化して、アプリが音声の再生とキャプチャを続行できるようにすることが含まれます。
アプリへの影響
一時停止中のオーディオ リソースの HAL レベルの管理は、アプリに次のような影響を与えます。
- 透過的な一時停止: マイクを使用するアプリの場合、システムの一時停止(S2D または S2R への移行)は透過的です。
- 遷移中の音声のミュート: 中断遷移が開始されると、アクティブなストリームは HAL でミュートされます。アプリは実行を継続しますが、一時停止中はミュートされた音声のみを受信します。
- 自動再開: システムが再開すると、アプリはリソースの再取得や復元アクションを必要とせずに、リアルな音声データの受信または送信を自動的に再開します。