基本的に、私が今やっているのは、A2DP受信機としてアンドロイドデバイスを使用し、ペアリングが確立されると、送信機から受信したサウンドを再生します。私はSTPプロファイルを使用すると、ストリーミングの遅延を引き起こす可能性があることを心配しています。だから、私はA2DPを使いたいのですが、これはA2DPの受信機としてAndroidデバイスを使用することは可能ですか?どのようにそれを行うには?A2DPプロファイルの受信機としてのAndroidデバイス
答えて
Android L以降、BlueDriodスタックはA2DPシンクをサポートしていますが、デフォルトでは無効になっています。 /external/bluetooth/bluedroid/include/bt_target.hで
/* Enable bluetooth av sink. */
#define BTA_AV_SINK_INCLUDED TRUE
:それは次の操作を行う有効にするには
。 これは、Bluetoothスタックでシンクサポートを有効にします。 /packages/apps/Bluetooth/res/values/config.xmlで
<!-- Enable sink support. -->
<bool name="profile_supported_a2dp_sink">true</bool>
:
また、あなたは、この変更を行う必要があります。これにより、特定のUIが有効になります。
これで、デバイスをペアリングしてストリーミングを開始できます。残念ながら、パケットを受信してもサウンドは聞こえません。その理由は、A2DPシンク用のオーディオルートがないからです。このパッチhttps://android-review.googlesource.com/#/c/98161/のコミットメッセージでは、これを修正する方法のサンプル実装を見つけることができます。
Android 6でこれが有効になっていますか? – rob
あなたが投稿した@niloパッチはアンドロイドアンドロイド-4.4_r1'のためのもので、アンドロイドの '' base''クラス(パッチとの関係)は異なります。例:ファイル 'platform/external/bluetooth/bluedroid/audio_a2dp_hw/audio_a2dp_hw.c'には既に' struct a2dp_stream_in * input; 'があります[audio_a2dp_hw.c line 87](https://android.googlesource.com/platform/external /bluetooth/bluedroid/+/android-5.0.0_r1/audio_a2dp_hw/audio_a2dp_hw.c) – tchelidze
これは、シンク機能がスタックの上位層に実装されているかどうかわかりませんが、ESP32 ICのesp-idfでも有効です。 –
はい。可能です。私はJBでそれをしました。 Androidは内部的にBluetooth用Broadcomの「Bluedroid」スタックを使用しています。以前は、このスタックにはA2DP Sink Role(あなたがレシーバと言いました)のサポートがありませんでした。 Lollipopリリースから、A2DP SinkロールプロファイルがBluedroidに追加されました。 しかし、フレームワーク/上位層(アプリケーション)で使用することはできません。 有効にするにはフレームワークを変更するか、または「使用する」必要があります。 次のファイルとAndroidソースコードの関連ファイルを参照して有効にすることができます。
audio.h - put a new audio source
audio_policy.conf - put a new input source for a2dp 'inputs'
AudioManager.java
AudioPolicyManagerBase.cpp
AudioService.java
AudioSystem.java
BluetoothA2dp.java
MediaRecorder.java
A2DPStateMachine.java
など
し、それを(このファイルリストは包括的ではありませんが、関連分野での経験を持っている場合は、あなたがそれを把握することができます)を実装。 ストリーム接続が確立されると、a2dpステートマシンでコールバックが発生し、そこからデコードされたPCMバイトを「新しい」オーディオソースから読み込んでメディアプレーヤーに送信する必要があります。 SBCコーデックからPCMデコードは、 'bluedroid' sbcデコーダレイヤーで行われます。
ビルドして携帯電話に書き込んで音楽を楽しんでください。
EDIT: また、BlueproidスタックのA2DP SDPレコードを変更して、A2DPシンクの役割を宣伝することができます。
このサンプルコードを少しまとめることができますか。私は "関連分野の経験"はありませんが、私はコンパイルしてアプリを書くことができます。私はフィードバックと午後にも感謝します。 –
あなたは、ないかもしれないB:ここで
は、これらの変更の一覧です2つの電話機の間で手動で行うことができます.1つのデバイスをストリームするためには、A2DPシンクと他のA2DPソースが必要です。電話機は通常、ソースデバイス(シンクデバイスにストリーミングできるストリームのソース)、シンクはヘッドセットまたはBluetoothスピーカー。- 1. A2DPデバイスの切り替え(Android)
- 2. アラーム受信機とAndroidマニフェスト
- 3. AndroidとiPhoneのブロードキャスト受信機/サービス
- 4. Android 4.xデバイスはGCMメッセージを受信しますが、Android 2.3デバイスは受信しません
- 5. Bluetooth A2DPとRFCOMMの同時通信
- 6. 受信機としてのBLE UART TXと送信機としてのRX
- 7. Android通信デバイスとIOTデバイス
- 8. Androidデバイスがマルチキャストパッケージを受信していない
- 9. Androidブロードキャスト受信機が機能していませんか?
- 10. Androidデバイスのすべてのネットワークインターフェイスを受信していません
- 11. A2DPプロファイルのBluetooth接続を切断する方法は?
- 12. デバイスに送信された最終プロファイル
- 13. UWPのUSB機能がAndroidデバイスと通信できません
- 14. Android UDP通信。デバイスからデータを受信できません
- 15. AndroidデバイスからPLCへのコマンドの送受信
- 16. GPSデバイスとサーバとの通信機能
- 17. AndroidデバイスがリアルタイムでFirebase通知を受信しない
- 18. 簡単なBluetoothデータ受信機Android
- 19. Android放送受信機+静的変数
- 20. USBデバイスとしてのAndroidデバイス
- 21. ブロードキャスト受信機を使用してAndroidサービスを開始する
- 22. Android放送受信機は常に稼動しています
- 23. 受信機のライフサイクル
- 24. SMS受信用のブロードキャスト受信機は、Androidの不在着信時に呼び出されています
- 25. 送信済みSMSメッセージのAndroid放送受信機?
- 26. 放送受信機は受信していません
- 27. Android、OSC、受信者がメッセージを受信していません。
- 28. Xamarin Forms androidブロードキャストレシーバを使用して受信テキストメッセージを受信
- 29. airplayのサーバー(受信者)としてのAndroidの実装
- 30. iOSとAndroidデバイス間のピアツーピア通信
[AndroidでBluetooth経由で音声を受信する](0120-998-501) – virtualxtc