ここでは、オーディオ ハードウェア抽象化レイヤ(HAL)の実装方法について説明するとともに、オーディオ ポリシーの構成(ファイル形式、コード編成、前処理効果)の詳細、および共有ライブラリの構成方法(Android.mk
のファイルの作成)について解説します。
オーディオ HAL 機能
Android 10 リリースでは、オーディオ HAL に次の新機能が含まれています。
AudioSource
VOICE_PERFORMANCE
ECHO_REFERENCE
AudioFormat
AAC_LATM
(LC
、HE V1
、およびV2
)CELT
APTX_ADAPTIVE
LHDC
LHDC_LL
AudioChannelMask
OUT_HAPTIC_A
OUT_HAPTIC_B
上記の HAL 機能をフレームワークで使用できるようにするには、デバイスの audio_policy_configuration.xml
で宣言する必要があります。
オーディオ HAL およびサブシステムの要件
Android 10 リリースでは、オーディオ HAL およびサブシステムを実装するために次の要件を満たす必要があります。
audio_policy_configuration.xml
で個別の入力ストリーム プロファイルが宣言されている場合、デバイス選択のために、すべてのプロファイルを同時に有効化できるように設定されている。- 入力プロファイルでサウンド トリガーのキャプチャ(起動ワード DSP バッファからのキャプチャ)が サポートされている場合、サウンド トリガー HAL でサポートされる同時セッションの数に対応したこのプロファイルのアクティブ ストリームの数を実装でサポートしている。
- AP からの DSP 起動ワードの検出とキャプチャの同時実行。
- 音声通話 TX の同時実行と AP からのキャプチャ。
オーディオ HAL の実装
オーディオ HAL は、次のインターフェースで構成されています。
hardware/libhardware/include/hardware/audio.h
。 オーディオ デバイスの主な機能を表します。hardware/libhardware/include/hardware/audio_effect.h
。 オーディオに適用できるダウンミックス、エコー、ノイズ抑制などの効果を表します。
すべてのインターフェースを実装する必要があります。
オーディオ ヘッダー ファイル
定義可能なプロパティについては、次のオーディオ ヘッダー ファイルをご覧ください。
- Android 6.0 以降の場合は、
system/media/audio/include/system/audio.h
をご覧ください。 - Android 5.1 以前の場合は、
system/core/include/system/audio.h
をご覧ください。
具体的な例については、Galaxy Nexus の実装例 device/samsung/tuna/audio
をご覧ください。
次のステップ
オーディオ HAL の実装に加えて、オーディオ トポロジを記述し、共有ライブラリに HAL 実装をパッケージ化するオーディオ ポリシー構成ファイルを作成する必要があります。また、自動ゲイン コントロールやノイズ抑制などの前処理効果を設定します。