Android-Gerät als receiver für A2DP-Profil
Im Grunde, was ich versuche zu tun ist, verwenden Sie ein android-Gerät wie ein A2DP Empfänger und beim pairing etabliert, android spielt Ton-Nachrichten von einem Sender. Ich bin die Angst, dass wenn ich STP-Profil kann zu einer Verzögerung von streaming. Also, ich möchte die Nutzung von A2DP ist aber möglich, verwenden Sie ein android-Gerät als Empfänger A2DP? und wie es zu tun?
- Mögliche Duplikate von Empfangen von audio via Bluetooth in Android
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit Android L die BlueDriod stack unterstützt A2DP-sink, aber es ist standardmäßig deaktiviert.
Um es zu aktivieren, machen Sie Folgendes:
in /external/bluetooth/bluedroid/include/bt_target.h.
Dies ermöglicht die Spüle zu unterstützen, die in der bluetooth-stack.
Auch das musst du ändern:
in /packages/apps/Bluetooth/res/values/config.xml. Dies ermöglicht es der UI.
Nun können Sie koppeln von Geräten und starten Sie das streaming. Leider werden Sie keinen Ton hören, obwohl Sie erhalten die Pakete. Der Grund dafür ist, dass es keine audio-route für A2DP sink. In der commit-Nachricht in diesem patch https://android-review.googlesource.com/#/c/98161/ finden Sie eine Beispiel-Implementierung auf, wie dieses Problem zu beheben.
Hier ist eine Liste der änderungen:
android android-4.4_r1
im android Lbase
Klassen (die vor patch ist) ist anders. Ex : in der Dateiplatform/external/bluetooth/bluedroid / audio_a2dp_hw/audio_a2dp_hw.c
es ist schonstruct a2dp_stream_in *input;
audio_a2dp_hw.c line 87Ja. Es ist möglich,. Ich habe es getan, in JB.
Android intern verwendet "Bluedroid" - stack von Broadcomm Bluetooth. Zuvor dieser Stapel nicht über die Unterstützung für A2DP-Sink-Rolle (Die Sie erwähnt als Empfänger). Von Lollipop release, das A2DP-Sink Rolle Profil Hinzugefügt worden ist, in Bluedroid.
Aber, es ist nicht aktiviert, verwendet werden, durch den Rahmen/upper layer (Anwendung).
Sie müssen änderungen in den Rahmenbedingungen, um es zu aktivieren oder zu 'benutzen' er.
Lesen Sie die folgenden Dateien und die entsprechenden Dateien im Android-source-code, um es zu aktivieren.
etc. und implementieren (diese Datei Liste ist nicht vollständig, aber Sie können es herausfinden, wenn Sie Erfahrung im relevanten Bereich).
Wenn alle stream-Verbindung hergestellt ist, erhalten Sie callback-in a2dp-state-Maschine und von dort aus startest du einen thread zu Lesen der dekodierten PCM-bytes von dem "neuen" audio-Quelle und senden Sie es an Ihren media-player.
SBC-codec PCM-Decodierung erfolgt bei der 'bluedroid' sbc-decoder layer.
Bauen es und flash es auf Ihr Handy und genießen Sie Musik.
BEARBEITEN:
Möglicherweise haben Sie auch änderungen im A2DP-SDP-Datensatz in Bluedroid stack zu werben, die das A2DP-Sink Rolle.
Können Sie nicht in der Lage sein, es zu tun manuell zwischen 2 Handys, weil zum streamen von einem Gerät muss A2DP sink-und anderen A2DP-Quelle, Handys sind in der Regel nur die Quellgeräte (Quelle für den stream, streamen, auf Spüle, Geräte) , Waschbecken sind Headsets oder Bluetooth-Lautsprecher.