4

Bluetooth経由でオーディオを送受信できるようにする必要があり、A2DPがこれを行うものであるようです

ここに記載されているコードを使用して、携帯電話を検出してリモート Bluetooth デバイスとペアリングし、Android デバイスのすべてのオーディオ出力を Bluetooth 経由でリモート デバイスに送信する A2DP 接続を確立することができました。

以前は、RFCOMM を介して同じリモート Bluetooth デバイスと双方向のデータ通信を行うことができました (ただし、通信を開始するのは Android 携帯電話である必要がありましたが、可能であることはわかっていますが、リモート デバイスを介して行うことはできませんでした)。RFCOMM リンクが確立されると、Android デバイスはリモート デバイスにデータを送信したり、リモート デバイスからデータを受信したりできます。

私が今必要としているのは、似たようなものですが、オーディオ用です (できれば A2DP を使用しますが、仕事が完了する限り、他のものを使用してもかまいません)。SO を詮索しているときに、A2DP を介して電話で音声データを受信することはできないというヒントが得られました (少なくとも、ルート化されていない通常のものであり、ルート化は私にとってはオプションではありません) (たとえば、ここを参照)。しかし、Bluetooth を介して完全に電話をかけることができるヘッドセットも見たことがあります (まあ、実際にはワイヤレスで、Bluetooth に違いないと思います)。たとえば、電話がかかってきた場合、Bluetooth イヤホンのボタンを押すだけで、相手の話を聞くだけでなく、話すこともできます。電話をオーディオ シンクとして使用できない場合、そのようなヘッドセットはどのように機能しますか?

Bluetooth経由でオーディオデータを送信および受信するAndroidアプリを作成する方法についていくつかのアイデアが必要です(簡単にするために、Bluechatサンプルプログラムに似ていますが、テキストではなくオーディオを含むと考えてください)。(Javaを介して)それはまったく可能ですか?NDK 経由でのみ可能ですか? 市場に出回っているデバイスはどのように機能しますか? A2DPとは別のプロファイルですか?

PS: 私のテスト デバイスは、Gingerbread を搭載した Samsung Galaxy 2 (電話) と KitKat を搭載した Asus Nexus 7 (タブレット) です。ちなみに、リモート bluetooth デバイス (開発ボード) には、ボードを A2DP オーディオ ソースに変換するサンプル プロジェクトが付属しています。このサンプル プロジェクトをボード上で実行し、携帯電話とタブレットの組み込みの Bluetooth 設定を使用すると、リモート ボードとペアリングできますが、Android デバイスはオーディオを受信しません。

4

2 に答える 2

3

2 つの異なる A2DP プロファイルA2DP sourceA2DP sink. プロファイルはA2DP sourceAndroid でサポートされているため、デバイスから Bluetooth スピーカーなどのシンクに音楽をストリーミングできます。私の知る限り、A2DP sinkプロファイルが有効になっていないため、携帯電話に音楽をストリーミングしてスピーカーとして機能させることができません。しばらく前にグーグルで検索したことでこれを知っているだけなので、状況が変わっている可能性があります。

電話A2DP sinkを編集して再起動することで、プロファイルを有効にすることができます。/etc/bluetooth/audio.conf残念ながら、これにはプロファイルを無効にするという副作用があるA2DP sourceため、広く配布されているアプリでは使用できません。もう 1 つの欠点は、そのプロファイルを操作するための Java ソフトウェア スタックがあまりないため、作業を進めるためにかなりの作業を行う必要があることです。

ヘッドセットが Android に接続できる理由についての質問に答えるには、ヘッドセットが と呼ばれる別のプロファイルを使用するためです。ヘッドHeadset profile (HSP)セットで一般的に使用されるかHandsfree profile (HFP)、車で一般的に使用されます。どちらのプロファイルにも、クライアント側とゲートウェイ側 (携帯電話) の 2 つの側面があります。これらのプロファイルの両方のオーディオ品質は、音声品質と見なされます。8 または 16 kHz のサンプル レートと安っぽいコーデック。電話に出たり電話をかけたりするためのプロトコルもたくさんあります...電話ネットワークへのアクティブな接続なしで音声を送信できるかどうかさえわかりません。

于 2015-01-14T02:02:12.480 に答える
1

A2DP シンクのサポート - はい。可能です。私はAndroid JBでそれをしました。 A2DP プロファイルの受信機としての Android デバイス- 私の返信を読んでください。

于 2015-03-06T05:50:08.310 に答える