Bluetooth を経由することで、デバイスから音声、メッセージング、電話などのインタラクティブなサービスに使用できるデータを送信できます。
include/hardware/bluetooth.h
には、さまざまなサービスで使用される Bluetooth プロファイルが含まれています。
音声
Bluetooth 接続を行うと、ユーザーは Bluetooth 対応デバイスで音声をストリーミングできます。音声を扱う場合、ほとんどのケースで、Android デバイスがソースになり、スピーカーやヘッドセットなどのレンダリング デバイスがシンクになります。
絶対音量制御
Android 6.0 以降では、Android Bluetooth スタックによってソースで絶対音量が設定され、ユーザーが音量を正確に制御できます。ソースデバイスは、減衰のない音声と音量情報をシンクに送信します。シンクは音量情報に従って音声を増幅し、その結果、ユーザーには音声が正確な音量で再生されます。
ソースデバイスでは、音量通知を登録することもできます。シンク上のコントロールで音量が変更されると、シンクからソースに通知が送信されます。これにより、ソースはユーザー インターフェースに正確な音量情報を表示します。
絶対音量制御はデフォルトで有効になっています。絶対音量制御を無効にするには、[設定] > [システム] > [開発者向けオプション] に移動し、[絶対音量を無効にする] の切り替えボタンを選択します。
高度なオーディオ コーデック
Android 8.0 では、デバイスで Advanced Audio Distribution Profile(A2DP)を使用する場合、追加のオーディオ コーデックをサポートできます。Bluetooth スタックは、デバイスがリモート オーディオ シンクに接続したときのオーディオ コーデック ネゴシエーションをサポートしています。このネゴシエーションでは、高品質の音声を提供するために、送信元とシンクの両方でサポートされている最適なコーデックが選択されます。選択後は、選択されたエンコーダからすべての音声がルーティングされ、シンクに送信されます。
実装
A2DP をサポートする Android 8.0 搭載デバイスでは、自動的に追加のコーデックがサポートされます。ただし、デバイス メーカーは、一部のプロプライエタリ オーディオ コーデック用に個別のライセンスとバイナリの blob を取得することが必要な場合があります。Android 8.0 では、SBC に加えて以下のコーデックがサポートされています。
- AAC
- aptX
- aptX HD
- LDAC
デバイス メーカーは、デバイスが最初に使用を試みるコーデックを選択できます。コーデックの優先順位を設定するには、
res/values/config.xml
で次の値を変更します。
<!-- Configuring priorities of A2DP source codecs. Larger value means higher priority. Value -1 means the codec is disabled. Value 0 is reserved and should not be used here. Enabled codecs should have priorities in the interval [1, 999999], and each priority value should be unique. --> <integer name="a2dp_source_codec_priority_sbc">1001</integer> <integer name="a2dp_source_codec_priority_aac">2001</integer> <integer name="a2dp_source_codec_priority_aptx">3001</integer> <integer name="a2dp_source_codec_priority_aptx_hd">4001</integer> <integer name="a2dp_source_codec_priority_ldac">5001</integer>
LDAC 認定
Android オープンソース プロジェクトには Sony の LDAC コーデックのエンコーダが含まれており、Sony の LDAC 用のライセンスや blob を個別に用意する必要はありません。LDAC コーデックをデバイスに組み込むには、Sony に登録して LDAC 認定プロセスを実施してください。
LDAC の認定ウェブサイトには、LDAC の仕様書や運用ハンドブックなどのドキュメントがあります。LDAC のサイトでは、モバイル デバイスとタブレット デバイスの検証および相互運用性テストも提供されています。LDAC 認定を完了するには、テストに合格した結果を Sony に送信します。
UI 機能
Android 8.0 では、コーデックのサポートを追加できるだけでなく、高解像度(HD)Bluetooth オーディオ コーデックを無効にするユーザー向けの設定も利用できます。
- [設定] > [接続済みのデバイス] > [Bluetooth] に移動します。
- コーデックを無効にするシンクの横にある歯車アイコンをタップします。
- [HD オーディオ] チェックボックスをオフにします。
デバイス メーカーが設定をカスタマイズする場合は、ユーザーが HD コーデックを無効にできる方法を実装する必要があります。
メッセージ
Bluetooth を介したメッセージングでは、リモート デバイスから SMS メッセージの読み取り、閲覧、作成ができます。この機能は、スマートフォンを車載インフォテインメント システムに接続する場合によく使用されます。
電話
ユーザーは、Bluetooth 電話サービスを使用して、通話をストリーミングし、スマートフォンから別の Bluetooth デバイスに連絡先を同期できます。これらの機能は、運転中のハンズフリー通話によく使用されます。
Android 8.0 では、Bluetooth でのインバンド着信音がサポートされています。Bluetooth 経由で接続されたスマートフォンが着信を受信すると、着信音がシンクで再生されます。インバンド着信音を有効にするには、[設定] > [システム] > [開発者向けオプション] で [インバンド リンギングを有効にする] の切り替えボタンを選択します。
Bluetooth の機能
Bluetooth サービスを実装するため、Bluetooth スタックではさまざまなプロファイルと機能がサポートされています。
Bluetooth プロファイル
Bluetooth では以下のプロファイルを利用できます。
機能 | Android のバージョン | |||||
---|---|---|---|---|---|---|
名前 | 説明 | 6.0 | 7.0 | 7.1 | 7.1.2 | 8.0 |
SAP | SIM アクセス プロファイル | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
MAP | SMS 用のメッセージ アクセス プロファイル | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
OPP | オブジェクト プッシュ プロファイル | 1.1 | 1.1 | 1.1 | 1.1 | 1.2 |
OBEX over L2CAP | 論理リンク制御と適応プロトコルによる OBject EXchange | ○ | ○ | ○ | ○ | ○ |
HFP オーディオ ゲートウェイ | ハンズフリー プロファイル | 1.6 | 1.6 | 1.7 | 1.7 | 1.7 |
HSP | ヘッドセット プロファイル | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
A2DP | 高度な音声配信プロファイル | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
AVRCP | 音声 / 動画リモート コントロール プロファイル | 1.3 | 1.3 | 1.3 | 1.3 | 1.4 |
HID | ヒューマン インターフェース デバイス プロファイル | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
PBAP | 電話帳アクセス プロファイル | 1.1.1 | 1.1.1 | 1.1.1 | 1.1.1 | 1.2 |
HDP | ヘルスデバイス プロファイル | 1.0 | 1.0 | 1.1 | 1.1 | 1.1 |
SPP | シリアルポート プロファイル | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
PAN / BNEP | パーソナル エリア ネットワーク プロファイル / Bluetooth ネットワーク カプセル化プロトコル | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
DIP | デバイス ID プロファイル | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
HOGP 1.0 | HID over GATT | ○ | ○ | ○ | ○ | ○ |
HD オーディオ1 | 上記の「高度なオーディオ コーデック」をご覧ください。 | × | × | × | × | ○ |
1 HD オーディオの実装は、ソースとシンクの両方でデバイスの機能に依存します。
Bluetooth Low Energy の機能
BLE では以下の機能を使用できます。
機能 | Android のバージョン | ||||
---|---|---|---|---|---|
名前 | 6.0 | 7.0 | 7.1 | 7.1.2 | 8.0 |
BR/EDR セキュア接続 | 4.1 | 4.1 | 4.1 | 4.1 | 5.0 |
LE プライバシー | 4.2 | 4.2 | 4.2 | 4.2 | 5.0 |
LE セキュア接続 | 4.2 | 4.2 | 4.2 | 4.2 | 5.0 |
データパケット拡張 | 4.2 | 4.2 | 4.2 | 4.2 | 5.0 |
32 ビット UUID | ○ | ○ | ○ | ○ | ○ |
デュアルモード LE(セントラル / ペリフェラル) | ○ | ○ | ○ | ○ | ○ |
LE ペリフェラル モード | ○ | ○ | ○ | ○ | ○ |
Google HCI 要件 | ○ | ○ | ○ | ○ | ○ |
LE 接続指向チャンネル | × | × | × | × | × |