Android のオーディオ Hardware Abstraction Layer(HAL)は、高レベルのオーディオ固有フレームワーク API を基盤となるオーディオ ドライバとハードウェアである android.media
に接続します。オーディオ HAL はオーディオ サービスに呼び出される標準インターフェースを定義します。オーディオ ハードウェアが正しく機能するように、オーディオ HAL を実装する必要があります。
このページでは、オーディオ HAL の概要と、その API と実装要件の詳細について説明します。
オーディオ HAL インターフェース
Android 14 以降では、オーディオ HAL インターフェースは AIDL を使用して定義されます。それより前のバージョンでは、HIDL を使用してオーディオ HAL インターフェースを定義します。パートナーと SoC ベンダーはオーディオ HAL を再実装して、AIDL インターフェースを利用できるようにすることが推奨されます。
Android 14 以降の追加機能向けの新しい HAL API は AIDL インターフェースの実装でのみサポートされます。Android 14 以降では、新しい API は HIDL 実装には追加されません。
AIDL に移行し、これまでのオーディオ HAL のメジャー バージョンを非推奨としてサポートを終了することにより、デバイスのディスク容量と RAM を解放できます。これにより、スムーズな UX につながり、エンドユーザーにより新しいユーザーに表示される機能を提供できます。
AIDL と HIDL のオーディオ HAL の違いについて詳細は、AIDL と HIDL のオーディオ HAL の比較をご覧ください。
オーディオ HAL API
オーディオ HAL には、次の API が含まれています。
- コア HAL は AudioFlinger で使用されるメインの API で、オーディオを再生し、オーディオ ルーティングを制御します。
エフェクト HAL API はエフェクト フレームワークで使用されえ、オーディオ エフェクトを制御します。また、エフェクト HAL API を介して、自動ゲイン コントロールやノイズ サプレッションなどの前処理エフェクトを設定することもできます。
共通 HAL は、コア HAL API とエフェクト HAL API で使用される共通のデータ型のライブラリです。共通 HAL はデータ構造を定義するのみのため、インターフェースがなく、関連する VTS テストもありません。
AIDL と HIDL に関連する個別の詳細については、それぞれ AIDL オーディオ HAL と HIDL オーディオ HAL をご覧ください。
要件
オーディオ HAL の実装とオーディオ ポリシー構成ファイルの作成に加えて、次の HAL 要件を遵守する必要があります。
入力プロファイルでサウンド トリガーのキャプチャ(起動ワード DSP バッファからのキャプチャ)がサポートされている場合、サウンド トリガー HAL でサポートされる同時セッションの数に対応したこのプロファイルのアクティブ ストリームの数を実装でサポートしている。
同時キャプチャに関するページに詳しく記載されている、アプリ プロセッサからの音声通話 TX とキャプチャの同時実行。