Bluetooth A2DP(Advanced Audio Distribution Profile
) er Bluetooth-stereoprofilen, som definerer, hvordan stereolyd af høj kvalitet kan streames fra en enhed til en anden via en Bluetooth-forbindelse – f.eks. musik streamet fra en mobiltelefon til trådløse hovedtelefoner.
I ældre Android-versioner var de klasser, der er nødvendige for at oprette forbindelse til en Bluetooth A2DP-enhed, skjult på API-niveau, og i de senere versioner fra Android 4.0 og frem er de gjort delvist synlige.
Men der er en løsning, som fungerer på alle Android-versioner, du kan nemt interagere med en hvilken som helst A2DP-enhed ved blot at foretage nogle IPC-opkald (Inter Process Communication).
Grundlæggende opnås dette ved brug af AIDL (Android Interface Definition Language), som grundlæggende giver mulighed for at definere den programmeringsgrænseflade, som både klienten og tjenesten er enige om for at kommunikere med hinanden ved hjælp af IPC.
Hvordan forbinder man en Bluetooth-enhed med en hvilken som helst Android-enhed?
For at aktivere forbindelsen til en Bluetooth-enhed til enhver android-enhed programmatisk skal du blot følge disse enkle trin.
Strin 1: Opret AIDL-filer
Vores første trin er at få fat i instansen af Bluetooth A2DP-klassen. For at gøre det skal du først oprette 2 AIDL-filer i din “src”-mappe i Android-projektet under pakke android.bluetooth
som følger :
Stræk 2: Tilføj tilladelser
Føj derefter i Android-manifestet tilladelser til brug af Bluetooth og følgende tjenester :
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE
Stræk 3: Aktiver Bluetooth og få parrede enheder
Først skal du sikre dig, om Bluetooth er aktiveret. For at anmode om, at Bluetooth aktiveres, skal du ringe til startActivityForResult()
med ACTION_REQUEST_ENABLE
action Intent. Dette vil udsende en anmodning om at aktivere Bluetooth via systemindstillingerne.
val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
Du kan hente de allerede parrede enheder fra BluetoothAdapter-klassen på følgende måde:
devices = BluetoothAdapter.getDefaultAdapter().bondedDevices
Fra enhederne kan du hente din headset-enhed, som du vil parre
Stræk 4: Etabler Bluetooth-forbindelse
Brug getProfileProxy()
til at etablere en forbindelse til det profilproxyobjekt, der er tilknyttet profilen. Opsæt en BluetoothProfile.ServiceListener(),
Denne lytter meddeler BluetoothProfile
IPC-klienter, når de har fået forbindelse til eller afbrudt forbindelsen til tjenesten.
Stræk 5: Stream lyd-URL
Næste trin er at streame lyd, som du ønsker at afspille på tilsluttede Bluetooth-headset. Initialiser MediaPlayer og afspil streaming url’en som nedenfor:
Stræk 6: Afbryd enheden
Endeligt er du færdig med at afspille lyden og ønsker at afbryde enheden lukke proxyforbindelsen, skal du bruge følgende metode til at afbryde og frigive MediaPlayer: