Verbinden mit einem Bluetooth-A2DP-Gerät von Android aus

Bluetooth A2DP(Advanced Audio Distribution Profile) ist das Bluetooth-Stereo-Profil, das definiert, wie qualitativ hochwertiges Stereo-Audio von einem Gerät zu einem anderen über eine Bluetooth-Verbindung gestreamt werden kann – zum Beispiel Musik von einem Mobiltelefon zu drahtlosen Kopfhörern.

In älteren Android-Versionen waren die Klassen, die für die Verbindung mit einem Bluetooth-A2DP-Gerät benötigt werden, in der API-Ebene versteckt, in den späteren Versionen ab Android 4.0 sind sie teilweise sichtbar gemacht.

Aber es gibt eine Lösung, die auf allen Android-Versionen funktioniert, man kann einfach mit jedem A2DP-Gerät interagieren, indem man einige IPC-Aufrufe (Inter Process Communication) macht.

Grundsätzlich wird dies durch die Verwendung von AIDL (Android Interface Definition Language) erreicht, die es im Grunde ermöglicht, die Programmierschnittstelle zu definieren, auf die sich sowohl der Client als auch der Dienst einigen, um über IPC miteinander zu kommunizieren.

Wie kann man ein Bluetooth-Gerät mit einem beliebigen Android-Gerät verbinden?

Um die Verbindung zu einem Bluetooth-Gerät mit einem beliebigen Android-Gerät programmatisch zu ermöglichen, müssen Sie nur diese einfachen Schritte befolgen.

Schritt 1: Erstellen von AIDL-Dateien

Unser erster Schritt besteht darin, die Instanz der Bluetooth A2DP-Klasse zu erhalten. Dazu müssen Sie zunächst 2 AIDL-Dateien in Ihrem „src“-Ordner des Android-Projekts unter Paket android.bluetooth wie folgt erstellen:

Schritt 2: Berechtigungen hinzufügen

Dann fügen Sie im Android Manifest die Berechtigungen für die Verwendung von Bluetooth und den folgenden Diensten hinzu:

android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE

Schritt 3: Bluetooth aktivieren und gekoppelte Geräte abrufen

Zuerst müssen Sie sicherstellen, dass Bluetooth aktiviert ist. Um die Aktivierung von Bluetooth anzufordern, rufen Sie startActivityForResult() mit der Aktion ACTION_REQUEST_ENABLE Intent auf. Dadurch wird eine Anforderung zur Aktivierung von Bluetooth über die Systemeinstellungen ausgegeben.

val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)

Sie können die bereits gekoppelten Geräte von der BluetoothAdapter-Klasse wie folgt abrufen:

devices = BluetoothAdapter.getDefaultAdapter().bondedDevices

Aus den Geräten können Sie Ihr Headset-Gerät abrufen, das Sie koppeln möchten

Schritt 4: Herstellen einer Bluetooth-Verbindung

Verwenden Sie getProfileProxy(), um eine Verbindung mit dem Profil-Proxy-Objekt herzustellen, das mit dem Profil verbunden ist. Richten Sie einen BluetoothProfile.ServiceListener(), Dieser Listener benachrichtigt BluetoothProfile IPC-Clients, wenn sie mit dem Dienst verbunden oder von ihm getrennt wurden.

Schritt 5: Audio-URL streamen

Der nächste Schritt ist das Streamen von Audio, das Sie auf dem angeschlossenen Bluetooth-Headset abspielen möchten. Initialisieren Sie den MediaPlayer und geben Sie die Streaming-URL wie folgt wieder:

Schritt 6: Trennen Sie das Gerät

Wenn Sie mit der Audiowiedergabe fertig sind und die Proxy-Verbindung zum Gerät trennen möchten, verwenden Sie die folgende Methode, um den MediaPlayer zu trennen und freizugeben:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.