Bluetooth Low Energy Audio(LEA)は、バッテリー駆動時間を犠牲にすることなく高忠実度のオーディオを受信できるようにし、さまざまなユースケースをシームレスに切り替えられるようにします。Android 13(API レベル 33)には、LEA の組み込みサポートが含まれています。
LEA ソースデバイスのマーケット シェアが拡大するまで、ほとんどの LEA ヘッドセットはデュアルモードになります。デュアルモード ヘッドセットで両方のトランスポートをペア設定して設定できる。
ユースケース
LEA は、次のようなユースケースで統合できます。
オーディオの共有: ユーザーは、複数のオーディオ ストリームを 1 つ以上のオーディオ シンクデバイスで同時に共有できます。ソースデバイスと接続されたデバイス間で音声が同期されます。
音声ブロードキャスト: ユーザーは、友だちや家族に音声をブロードキャストできるほか、情報発信、エンターテイメント、ユーザー補助のための公開ブロードキャストに接続することもできます。
LC3 オーディオ コーデックのサポート: これはデフォルトのオーディオ コーデックで、A2DP(メディア)と HFP の mSBC(音声)で使用される SBC コーデックに代わるものです。LC3 は、より効率的で再構成可能で、品質も高くなります。
音声サンプリングの改善: ヘッドセットでマイクの使用時に高い出力音質を維持できるようになりました。Bluetooth クラシックでは、Bluetooth マイクを使用すると音質が低下します。BLE Audio では、入力と出力のサンプリングは 32 kHz に達する場合があります。
ステレオ マイク: 空間オーディオを強化するために、ヒアラブル デバイスでステレオ マイクを使用して音声を録音できます。
Hearing Aid Profile(HAP)のサポート: HAP は、従来の ASHA プロトコルよりもユーザーの利便性と使い勝手を高めています。ユーザーは、電話や VoIP アプリで補聴器を使用できます。
拡張属性プロトコル(EATT)のサポート: EATT を使用すると、デベロッパーはペア設定されたヘッドフォンに複数のコマンドを一度に送信できます。
重要なシナリオ
ユースケースには主に次の 4 つのカテゴリがあります。
会話型: 低レイテンシの通信ルーティングを必要とする電話アプリと VoIP アプリは、高品質な音声を提供し、バッテリーの使用量を削減します。
ゲーム: マイクの同時使用と高忠実度再生により、ゲームで高品質の音声を聞き取れるデバイスにストリーミングできます。ゲームアプリは、ゲームが Bluetooth マイクを使用可能として起動すると、BLE 音声入力にアクセスできます。その後、プレーヤーがピア プレーヤーとのライブ会話を開始すると、ゲームアプリは遅延なくマイクデータを使用できます。
メディア: メディア アプリで、オーディオ マネージャーの優先デバイスを設定できます。ユーザーは、システムの設定から優先デバイスを変更することで、この設定をオーバーライドできます。
ユーザー補助: BLE Audio をサポートする補聴器でマイクが使用できるようになり、通話で補聴器を継続的に使用できるようになりました。
BLE オーディオ API とメソッド
BLE Audio ヒアラブル デバイスをサポートするには、次の API とメソッドが必要です。
AudioManager
setCommunicationDevice()
: 音声通話やビデオ通話など、コミュニケーションのユースケースに使用する音声デバイスを選択します。このメソッドは、音声チャット アプリケーションやビデオ チャット アプリケーションで、プラットフォームでデフォルトで選択されている音声デバイスとは異なる音声デバイスを選択する場合に使用できます。この API は、非推奨の API であるstartBluetoothSco()
、stopBluetoothSco()
、setSpeakerphoneOn()
に代わるものです。clearCommunicationDevice()
は、アプリが呼び出しまたはセッションを終了した後に呼び出され、ユーザーがさまざまなアプリを移動する際に優れたエクスペリエンスを提供できるようにします。
BluetoothProfile
BluetoothLeAudio
は、プロキシ オブジェクトを介して Bluetooth サービスを制御します。
Telecom InCallService
- 非推奨の
InCallService.setAudioRoute()
API とInCallService.requestBluetoothAudio()
API に代わるInCallService#requestCallEndpointChange()
により、アプリは特定のCallEndpoint
へのオーディオ ルーティングをリクエストできるようになりました。変更をリクエストするときに、クライアントが独自のCallEndpoint
を定義しないでください。代わりに、新しいエンドポイントはInCallService.onAvailableCallEndpointsChanged(java.util.List)
によって提供される有効なエンドポイントのいずれかである必要があります。 CallEndpoint.TYPE_BLUETOOTH
は、Bluetooth 経由で音声ストリームを転送します。- 前述の
InCallService
API は、Android スマートフォンのデフォルトの電話アプリ、または音声ルーティングに影響を与える可能性があるウェアラブル、自動車、その他の Bluetooth デバイスなどの通話サーフェスで使用するように設計されています。
通信 CallControl
- 新しい
CallControl
クラスは API レベル 34 で導入され、VoIP アプリケーション専用のConnection
とConnectionService
に代わるものです。 CallControl.requestCallEndpointChange()
はCallEndpoint
の変更もリクエストします。この API は、非推奨のConnection.requestBluetoothAudio()
API とConnection.setAudioRoute()
API に代わるものです。- 音声通話やビデオ通話のアプリを構築する場合は、更新された Telecom プラットフォーム API に加えて、Telecom Jetpack ライブラリの使用を強くおすすめします。このライブラリにより、統合プロセスが大幅に簡素化され、すべての Android サーフェスでの VoIP 通話が改善されます。
オーディオ機器情報
AudioDeviceInfo.TYPE_BLE_HEADSET
は、オーディオ デバイスタイプを LEA デバイスとして記述します。聴覚装置が LEA デバイスかどうかを識別するために使用されます。
音声レコーダー
setPreferredDevice()
: 音声ルーティングに使用する優先デバイスを設定します。ユーザーはシステム設定でこの設定をオーバーライドできます。
Bluetooth アダプター
isLeAudioSupported()
は、プラットフォームのハードウェアが LEA をサポートしているかどうかを返します。isLeAudioBroadcastSourceSupported()
は、プラットフォームのハードウェアが LEA をサポートしている場合に返されます。
ユースケースに基づくガイド
以下に、特定のユースケースに基づく LEA の実装に関するガイドラインを示します。
音声通信アプリケーション
音声通信アプリでは、ステータスを自己管理するか、音声ルーティングとステータス ロジックを実行する Telecom API を使用するかを選択できます。
セルフマネージド: 現在
startBluetoothSco()
、stopBluetoothSco()
、setSpeakerphoneOn()
を使用しているアプリ、または音声ルーティングの状態をセルフマネージドするアプリの場合は、オーディオ マネージャーのセルフマネージド呼び出しガイドをご覧ください。マネージド: Telecom Jetpack ライブラリまたは Telecom Platform API を使用して、音声通話アプリまたはビデオ通話アプリを作成します。
この 2 つのソリューションにより、音声ルーティングをすばやく簡単に制御し、Bluetooth デバイスを切り替えることができます。詳細については、テレコム管理通話ガイドをご覧ください。
音声録音アプリケーション
- メディア レコーダー: メディア レコーダーを使用して音声を録音する際、Bluetooth ヒアラブル デバイスが LEA に対応している場合はステレオで録音できるようになりました。音声録音ガイドをご覧ください。
LE Audio(LEA)ヘッドセットの推奨事項
多くの LEA ヘッドセットがリリースされるにつれて、ユーザー エクスペリエンスを低下させる問題が実際のテストで見つかりました。仕様では、これらの問題のすべてを網羅していません。次の表に、Android ユーザーのエンドツーエンドのエクスペリエンスを向上させるために LEA ヘッドセット メーカーが遵守すべき推奨事項を示します。
説明 | コンテキスト |
---|---|
デュアルモード ヘッドセットのクロス トランスポート鍵導出(CTKD)をサポートします。
|
LEA ソースデバイスの市場シェアが拡大するまでは、新しい LEA ヘッドセットのほとんどがデュアルモードになります。ユーザーがデュアルモード ヘッドセットをシームレスにペア設定し、両方のトランスポートを設定できるようにすることが重要です。これは Google ファストペアにも重要です。 |
LEA ヘッドセットをソースデバイスに確実に再接続するには、ターゲット通知(TA)をサポートします。 LE オーディオ イヤホンは、TA を使用して中央デバイスからの受信接続をリクエストする必要があります。 今後の BT SIG に追加されます。 |
スマートフォンまたはヘッドセットのいずれかから接続を開始できる BR/EDR のページング モデルとは異なり、LEA の接続はセントラル デバイスから開始する必要があります。現在、多くのヘッドセットは TA を使用していません。つまり、許可リストに追加しないと、中央デバイスがペリフェラルに再接続できない場合があります。ただし、許可リストの回避策により、ヘッドセットを別のセントラル デバイスに接続できなくなる場合があります。そのため、LEA ヘッドセットが TA を適切にサポートし、マルチポイント接続を切断する可能性のある回避策を行わずに、中央デバイスが確実に再接続できるようにすることが重要です。 |
デュアルモード イヤフォンの見つけやすさを最適化
|
これにより、デュアルモード LEA イヤホンが Bluetooth 設定で重複するエントリとして表示され、ユーザーが混乱したり、LEA のペア設定がうまくいかなかったりするのを防ぐことができます。
動的リーダー選出は、段階的にペア設定されるデュアルモード デバイスで特に重要です。たとえば、最初のペア設定で使用できるイヤホンが 1 つしかない場合は、デュアルモード デバイスとして表示されます。ユーザーが後で 2 つ目のイヤホンをペア設定する場合は、LE コンポーネントとペア設定するだけで、CSIP によって Android でグループ化されます。 BR/EDR コンポーネントはすでにデバイスの公開アドレスを近くのデバイスに公開しているため、ペア設定中は ID アドレスを使用することをおすすめします。 |
拡張属性プロトコル(EATT)をサポートします。 | ペア設定と接続のレイテンシを短縮します。 |
堅牢な GATT キャッシュをサポート。 | 接続レイテンシを短縮します(TWS イヤホンの場合特に効果的)。 |
接続のサブレーティングをサポート。 | より柔軟なパケット スケジューリングが可能になり、バッテリーの節約につながる可能性があります。 |
再生とキャプチャの両方の前処理と後処理で、信号処理パイプラインが 16、24、32、48 kHz で動作し、より高い周波数をサポートできるようにする。 | LEA 通話または VoIP キャプチャ パスとメディア再生でサポートされている高サンプルレートを利用します。 |
LE Power Control をサポート | 電力管理の改善 |
コンテキスト タイプのサポート
説明 | コンテキスト |
---|---|
ヘッドセットが特定のコンテキスト タイプを明示的にサポートしていない場合を除き、割り当てられた番号 6.12.3 で指定されているすべてのコンテキスト タイプを使用します。 | たとえば、コンテキスト タイプ「ゲーム」がサポートされていない場合、Android はゲーム音を送信します。特に、「未指定」のコンテキスト タイプは「任意のコンテキスト タイプ」を意味するものではなく、サポートされていないコンテキスト タイプは対象外です。 |
セントラル デバイスがペリフェラル デバイスの ASCS とやり取りする場合、ペリフェラルはセントラル デバイスの MCS と TBS に接続する必要があります。 セントラル デバイスは、A2DP または HFP を使用するようにフォールバックする可能性があるため、ストリーミング ルートとして LE オーディオを使用するとは限りません。ペリフェラル デバイスは、セントラル デバイスがストリーミングに LE オーディオを使用するかどうかを示すために ASCS インタラクションを使用できます。 ASCS のインタラクションの例としては、読み取り、書き込み、通知の登録などがあります。 |