Android-Gerät als Empfänger für A2DP-Profil

8

Grundsätzlich versuche ich gerade, ein Android-Gerät als A2DP-Empfänger zu verwenden, und wenn das Pairing eingerichtet ist, spielt Android Sound, der von einem Sender empfangen wird. Ich mache mir Sorgen, dass wenn ich das STP-Profil verwende, es zu Verzögerungen beim Streaming kommen kann. Also, ich möchte A2DP verwenden, aber ist es möglich, ein Android-Gerät als Empfänger von A2DP zu verwenden? und wie es geht?

    
Heewon Hwang 04.01.2015, 08:23
quelle

3 Antworten

9

Seit Android L unterstützt der BlueDriod-Stack die A2DP-Senke, ist aber standardmäßig deaktiviert.

Um es zu aktivieren, machen Sie folgendes:

%Vor%

in /external/bluetooth/bluedroid/include/bt_target.h . Dies ermöglicht die Unterstützung von Sinks im Bluetooth-Stack.

Auch Sie müssen diese Änderung vornehmen:

%Vor%

in / packages / apps / Bluetooth / res / values /config.xml . Dies aktiviert die jeweilige Benutzeroberfläche.

Jetzt können Sie Ihre Geräte koppeln und mit dem Streaming beginnen. Leider hören Sie keinen Ton, obwohl Sie die Pakete erhalten. Der Grund ist, dass es keine Audio-Route für die A2DP-Senke gibt. In der Commit-Nachricht dieses Patches Ссылка finden Sie eine Beispielimplementierung, wie Sie dies beheben können.

Hier ist eine Liste dieser Änderungen:

nilo 16.07.2015, 15:51
quelle
2

Ja. Es ist möglich. Ich habe es in JB gemacht. Android verwendet intern "Bluedroid" Stack von Broadcomm für Bluetooth. Zuvor hatte dieser Stack keine Unterstützung für A2DP Sink Role (die Sie als Empfänger erwähnten). Ab der Lollipop-Version wurde das A2DP Sink-Rollenprofil in Bluedroid hinzugefügt. Es ist jedoch nicht möglich, von framework / layer (Application) verwendet zu werden. Sie müssen Änderungen im Framework vornehmen, um es zu aktivieren oder zu "verwenden". Sie können die folgenden Dateien und relevante Dateien im Android-Quellcode verwenden, um sie zu aktivieren.

%Vor%

usw. und implementieren Sie es (diese Dateiliste ist nicht umfassend, aber Sie können es herausfinden, wenn Sie Erfahrung im relevanten Feld haben). Wenn eine Stream-Verbindung hergestellt ist, erhalten Sie einen Rückruf in einem a2dp-Automaten und von dort müssen Sie einen Thread starten, um die decodierten PCM-Bytes von der "neuen" Audioquelle zu lesen und sie an Ihren Media Player zu senden. SBC-Codec-zu-PCM-Decodierung wird auf der 'bluedroid' sbc-Decodierschicht durchgeführt.

Bauen Sie es auf und blitzen Sie es auf Ihr Telefon und genießen Sie Musik.

BEARBEITEN: Möglicherweise haben Sie auch Änderungen im A2DP SDP-Datensatz im Bluedroid-Stapel vorgenommen, um die A2DP Sink-Rolle anzukündigen.

    
theangrylama 06.03.2015 05:38
quelle
1

Sie können es möglicherweise nicht manuell zwischen zwei Telefonen tun, da zum Streamen eines Geräts A2DP-Senke und andere A2DP-Quellen erforderlich sind. Telefone sind in der Regel nur Quellengeräte (Quelle des Streams, der zum Senken von Geräten streamen kann). , Sinks sind Headsets oder Bluetooth-Lautsprecher.

    
xam MTS 05.12.2017 10:33
quelle