概要
BluetoothA2dpSink
Bluetooth A2DP シンク プロファイルを制御するためのパブリック API。簡単に言えば、Bluetoothスピーカー側のオペレーションエージェントであり、Bluetooth A2DPプロトコルの接続切断を制御したり、設定情報を問い合わせたりすることができます。
初期化
BluetoothA2dpSink
のインスタンスは をBluetoothAdapter
介して取得されますgetProfileProxy
。
例:
public void getA2DPSinkProxy(Context context){
BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new BluetoothProfile.ServiceListener() {
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {
BluetoothA2dpSink bluetoothA2dpSink = (BluetoothA2dpSink) proxy;
//此处拿到的代理实例为bluetoothA2dpSink。
}
@Override
public void onServiceDisconnected(int profile) {
}
},BluetoothProfile.A2DP_SINK);
}
A2DPプロトコルの接続と切断
connect
このメソッドは、A2DP プロトコル接続に使用されます。
入力パラメータは Bluetooth デバイス インスタンスです (BlueToothAdapter
取得による)。
現在、システムは 1 つの A2DP プロトコル接続のみをサポートしています。API は、接続する前に、接続されているデバイスを自動的に切断します。
この API は、デバイスのプロファイルが接続されている場合や Bluetooth がオンになっていない場合などに false を返します。この API が true を返すと、BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED
ブロードキャストで接続状態を監視できます。(Bluetooth関連の放送については、後日別記事を開設予定です。)
disconnect
A2DP プロトコルの切断方法。
入力パラメータは Bluetooth デバイス インスタンスです (BlueToothAdapter
取得による)。
Bluetooth デバイスのプロファイルが接続されていない場合など、この API は false を返します。この API が true を返すと、BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED
ブロードキャストで切断状態を監視できます。
切断がリモート デバイスによって開始された場合、状態の変化はSTATE_CONNECTED
->ですSTATE_DISCONNECTED
。
切断がホスト (ローカル) デバイスによって開始された場合、ステータスはSTATE_CONNECTED
-> STATE_DISCONNECTING
->ですSTATE_DISCONNECTED
。
構成およびステータス情報を取得する
getConnectedDevices
方法:
A2DP プロトコルに接続されている現在のデバイス インスタンスを取得できます。
getDevicesMatchingConnectionStates
方法:
接続ステータスを満たすすべてのデバイスのリストを取得します。
接続ステータスはBluetoothProfile.STATE_CONNECTING
、BluetoothProfile.STATE_DISCONNECTED
、 、またはBluetoothProfile.STATE_DISCONNECTING
のいずれかです。
getConnectionState
メソッド:
現在の A2DP プロトコル接続ステータスを取得します。ステータスにはBluetoothPrifile.STATE_CONNECTED
、BluetoothPrifile.STATE_CONNECTING
、BluetoothPrifile.STATE_DISCONNECTED
、BluetoothPrifile.STATE_DISCONNECTING
の 4 つがあります。
getAudioConfig
メソッド:
A2DP ソース デバイスの現在のオーディオ構成を取得するか、デバイスにオーディオ構成がない場合は null を取得します。クラスには、オーディオ形式やその他の情報を含む
オーディオ構成情報があります。BluetoothAudioConfig
setPriority
方法:
権限を設定します。入力パラメータは、設定する必要があるリモート デバイス インスタンスと許可機能です。権限はとのいずれかです。:A2DPが接続できます。:A2DPは接続できません。デバイスのアクセス許可は、メソッドを介して取得できます。BluetoothA2dpSink.PRIORITY_ON
BluetoothA2dpSink.PRIORITY_OFF
PRIORITY_ON
PRIORITY_OFF
getPriority
setConnectionPolicy
方法:
プロトコル接続ポリシーを設定します。入力パラメーターは、設定するデバイスと接続ポリシーです。
接続方法はBluetoothProfile.CONNECTION_POLICY_ALLOWED
、のいずれかですBluetoothProfile.CONNECTION_POLICY_FORBIDDEN
。: A2DP はデフォルトで接続されています: A2DP はデフォルトで接続されていません: 接続戦略は不明です (デバイスが設定されていないか、デバイスがペアリングされていません)接続戦略はメソッドで取得できます。BluetoothProfile.CONNECTION_POLICY_UNKNOWN
CONNECTION_POLICY_ALLOWED
CONNECTION_POLICY_FORBIDDEN
CONNECTION_POLICY_UNKNOWN
getConnectionPolicy
isAudioPlaying
メソッド:
デバイスが A2DP 経由でオーディオを再生しているかどうかを返します。
結論:
Bluetooth オーディオ プロトコルは、車だけで使用されているわけではありません。オーディオの受信側が Android デバイスの場合、このエージェントを使用して操作できます (例: Android スマート スピーカー)。