Android カーの Bluetooth 関連開発 3: Bluetooth オーディオ レシーバー BluetoothA2dpSink

概要

BluetoothA2dpSinkBluetooth 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関連の放送については、後日別記事を開設予定です。)

disconnectA2DP プロトコルの切断方法。
入力パラメータは 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_CONNECTINGBluetoothProfile.STATE_DISCONNECTED、 、またはBluetoothProfile.STATE_DISCONNECTINGのいずれかです。

getConnectionStateメソッド:
現在の A2DP プロトコル接続ステータスを取得します。ステータスにはBluetoothPrifile.STATE_CONNECTEDBluetoothPrifile.STATE_CONNECTINGBluetoothPrifile.STATE_DISCONNECTEDBluetoothPrifile.STATE_DISCONNECTINGの 4 つがあります。

getAudioConfigメソッド:
A2DP ソース デバイスの現在のオーディオ構成を取得するか、デバイスにオーディオ構成がない場合は null を取得します。クラスには、オーディオ形式やその他の情報を含む
オーディオ構成情報があります。BluetoothAudioConfig

setPriority方法:
権限を設定します。入力パラメータは、設定する必要があるリモート デバイス インスタンスと許可機能です。権限はとのいずれかです。:A2DPが接続できます。:A2DPは接続できません。デバイスのアクセス許可は、メソッドを介して取得できます
BluetoothA2dpSink.PRIORITY_ONBluetoothA2dpSink.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 スマート スピーカー)。

おすすめ

転載: blog.csdn.net/NAME_CJF/article/details/126872133
おすすめ