A2DP であるかどうかにかかわらず、Bluetooth デバイスが電話に接続されていることをどのように確認できますか?
このチュートリアルでは、Bluetooth 接続をリッスンするための非常にわかりやすいガイドを提供します。
これを使用して、接続されている Bluetooth デバイスが A2DP タイプかどうかを判断したいと考えています。
AudioManager
メソッドisBluetoothA2dpOn()
がありますが、A2DPデバイスが接続されているからといって、オーディオがそれを介してルーティングされているという意味ではないため、これがすぐにtrueを返すとは思わない(または、まったく確実に)とは思わない?
接続されているデバイスのタイプに関する情報は、受信したインテントで利用できると思っていましたが (上記のチュートリアルを参照)、これに関するドキュメントが見つかりませんか?
BluetoothClass
このコードで取得できます:
BluetoothClass btClass = intent.getParcelableExtra(BluetoothDevice.EXTRA_CLASS);
しかし、ドキュメントには次のように記載されているため、それがA2DP
プロファイルであるかどうかを判断するのには役立ちません。BluetoothClass
BluetoothClass は、デバイスを大まかに説明するためのヒント (たとえば、UI にアイコンを表示するため) として役立ちますが、どの Bluetooth プロファイルまたはサービスがデバイスで実際にサポートされているかを確実に説明するものではありません。createRfcommSocketToServiceRecord(UUID) および listenUsingRfcommWithServiceRecord(String, UUID) を使用して RFCOMM ソケットを作成するときに自動的に実行される SDP 要求によって、正確なサービス検出が行われます。
...これは私にはかなり無意味です。