Bluetooth A2DP(Advanced Audio Distribution Profile
) è il profilo Bluetooth Stereo che definisce come l’audio stereo di alta qualità può essere trasmesso da un dispositivo a un altro su una connessione Bluetooth – per esempio, la musica trasmessa da un telefono cellulare a cuffie senza fili.
Nelle vecchie versioni di Android le classi necessarie per connettersi a un dispositivo Bluetooth A2DP erano nascoste nel livello API e nelle versioni successive da Android 4.0 in poi, sono rese parzialmente visibili.
Ma c’è una soluzione che funziona su tutte le versioni di Android, si può facilmente interagire con qualsiasi dispositivo A2DP semplicemente facendo alcune chiamate IPC (Inter Process Communication).
Fondamentalmente, questo si ottiene con l’uso di AIDL (Android Interface Definition Language) che fondamentalmente permette di definire l’interfaccia di programmazione che sia il client che il servizio concordano per comunicare tra loro utilizzando IPC.
Come collegare un dispositivo Bluetooth a qualsiasi dispositivo Android?
Per abilitare programmaticamente la connessione a un dispositivo Bluetooth a qualsiasi dispositivo Android, basta seguire questi semplici passi.
Passo 1: Creare file AIDL
Il nostro primo passo è quello di ottenere l’istanza della classe Bluetooth A2DP. Per questo, quello che devi fare è creare 2 file AIDL prima nella tua cartella “src” del progetto Android sotto il pacchetto android.bluetooth
come segue :
Passo 2: Aggiungere i permessi
Poi nel Manifest di Android, aggiungere i permessi per l’utilizzo del Bluetooth e dei seguenti servizi :
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE
Passo 3: Abilitare il Bluetooth e ottenere i dispositivi accoppiati
Prima di tutto, è necessario assicurarsi che il Bluetooth sia abilitato. Per richiedere che il Bluetooth sia abilitato, chiama startActivityForResult()
con l’azione Intent ACTION_REQUEST_ENABLE
. Questo emetterà una richiesta per abilitare il Bluetooth attraverso le impostazioni di sistema.
val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
Puoi ottenere i dispositivi già accoppiati dalla classe BluetoothAdapter come segue:
devices = BluetoothAdapter.getDefaultAdapter().bondedDevices
Dai dispositivi puoi ottenere il dispositivo delle cuffie che vuoi accoppiare
Passo 4: Stabilire la connessione Bluetooth
Usa getProfileProxy()
per stabilire una connessione all’oggetto proxy del profilo associato al profilo. Imposta un BluetoothProfile.ServiceListener(),
Questo ascoltatore notifica BluetoothProfile
ai client IPC quando sono stati connessi o disconnessi dal servizio.
Step 5: Stream Audio URL
Il prossimo passo è lo streaming dell’audio che vuoi riprodurre sulle cuffie Bluetooth collegate. Inizializza MediaPlayer e riproduci l’URL di streaming come segue:
Step 6: Disconnetti il dispositivo
Finalmente finito di riprodurre l’audio e vuoi disconnettere il dispositivo chiudi la connessione proxy, usa il seguente metodo per disconnettere e rilasciare il MediaPlayer: