Bluetooth A2DP(Advanced Audio Distribution Profile
) är en Bluetooth-stereoprofil som definierar hur högkvalitativt stereoljud kan strömmas från en enhet till en annan via en Bluetooth-anslutning – till exempel musik från en mobiltelefon till trådlösa hörlurar.
I äldre Android-versioner var de klasser som krävs för att ansluta till en Bluetooth A2DP-enhet dolda på API-nivå och i de senare versionerna från och med Android 4.0 är de delvis synliga.
Men det finns en lösning som fungerar på alla Android-versioner, du kan enkelt interagera med vilken A2DP-enhet som helst genom att helt enkelt göra några IPC-samtal (Inter Process Communication).
Detta uppnås i princip genom att använda AIDL (Android Interface Definition Language) som i princip gör det möjligt att definiera det programmeringsgränssnitt som både klienten och tjänsten kommer överens om för att kommunicera med varandra med hjälp av IPC.
Hur ansluter man en Bluetooth-enhet till en Android-enhet?
För att möjliggöra anslutningen till en Bluetooth-enhet till en Android-enhet programmatiskt behöver du bara följa dessa enkla steg.
Steg 1: Skapa AIDL-filer
Vårt första steg är att få tag på instansen av Bluetooth A2DP-klassen. För detta måste du skapa två AIDL-filer först i din mapp ”src” i Android-projektet under paket android.bluetooth
enligt följande :
Steg 2: Lägg till behörigheter
I Android Manifest lägger du till behörigheter för användning av Bluetooth och följande tjänster :
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE
Steg 3: Aktivera Bluetooth och hämta parade enheter
Först måste du se till att Bluetooth är aktiverat. Om du vill begära att Bluetooth ska aktiveras ringer du startActivityForResult()
med ACTION_REQUEST_ENABLE
action Intent. Detta kommer att utfärda en begäran om att aktivera Bluetooth via systeminställningarna.
val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
Du kan hämta de redan parade enheterna från BluetoothAdapter-klassen på följande sätt:
devices = BluetoothAdapter.getDefaultAdapter().bondedDevices
Från enheterna kan du hämta den headset-enhet som du vill para ihop
Steg 4: Etablera Bluetooth-anslutning
Använd getProfileProxy()
för att etablera en anslutning till det profil-proxyobjekt som är associerat med profilen. Konfigurera en BluetoothProfile.ServiceListener(),
Denna lyssnare meddelar BluetoothProfile
IPC-klienter när de har anslutits till eller kopplats från tjänsten.
Steg 5: Strömma ljud-URL
Nästa steg är att strömma ljudet som du vill spela upp på det anslutna Bluetooth-headsetet. Initialisera MediaPlayer och spela upp den strömmande url:
Steg 6: Koppla bort enheten
Slutligt är du klar med att spela upp ljudet och vill koppla bort enheten och stänga proxy-anslutningen, använd följande metod för att koppla bort och släppa MediaPlayer: