A Bluetooth A2DP(Advanced Audio Distribution Profile
) a Bluetooth sztereó profil, amely meghatározza, hogyan lehet kiváló minőségű sztereó hangot streamelni egyik eszközről a másikra Bluetooth-kapcsolaton keresztül – például zenét streamelni mobiltelefonról vezeték nélküli fejhallgatóra.
A régebbi Android verziókban a Bluetooth A2DP eszközhöz való csatlakozáshoz szükséges osztályok az API szintjén rejtve voltak, a későbbi verziókban az Android 4.0-tól kezdve pedig részben láthatóvá váltak.
Van azonban egy megoldás, amely minden Android verzión működik, egyszerűen, néhány IPC (Inter Process Communication) hívással bármilyen A2DP eszközzel kapcsolatba léphetünk.
Ez alapvetően az AIDL (Android Interface Definition Language) használatával érhető el, amely alapvetően lehetővé teszi annak a programozási felületnek a meghatározását, amelyben a kliens és a szolgáltatás egyaránt megegyezik, hogy IPC segítségével kommunikáljanak egymással.
Hogyan lehet Bluetooth-eszközt csatlakoztatni bármely Android-eszközhöz?
Hogy lehetővé tegye a Bluetooth-eszközhöz való csatlakozást bármely androidos eszközhöz programozottan, csak ezeket az egyszerű lépéseket kell követnie.
1. lépés: AIDL fájlok létrehozása
Az első lépésünk a Bluetooth A2DP osztály példányának megszerzése. Ehhez először 2 AIDL fájlt kell létrehoznunk az Android projekt “src” mappájában a android.bluetooth
csomag alatt lévő android.bluetooth
csomagban az alábbiak szerint :
2. lépés: Engedélyek hozzáadása
Ezután az Android Manifestben adjunk hozzá engedélyeket a Bluetooth és a következő szolgáltatások használatához :
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.BIND_ACCESSIBILITY_SERVICE
3. lépés: Enable Bluetooth and Get Paired Devices
Először is meg kell győződnünk arról, hogy a Bluetooth engedélyezve van-e. A Bluetooth engedélyezésének kéréséhez hívja startActivityForResult()
az ACTION_REQUEST_ENABLE
Intent művelettel. Ez a rendszerbeállításokon keresztül kérést ad ki a Bluetooth engedélyezésére.
val enableBtIntent = Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE)
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
A BluetoothAdapter osztályból a már párosított eszközöket a következőképpen szerezheti meg:
devices = BluetoothAdapter.getDefaultAdapter().bondedDevices
Az eszközök közül megkaphatja a párosítani kívánt headset eszközt
4. lépés: Bluetooth kapcsolat létrehozása
A getProfileProxy()
segítségével kapcsolatot létesíthet a profilhoz tartozó profilproxy objektummal. Állítson be egy BluetoothProfile.ServiceListener(),
Ez a figyelő értesíti a BluetoothProfile
IPC-ügyfeleket, ha csatlakoztak a szolgáltatáshoz, illetve ha megszakadt a kapcsolatuk.
5. lépés: Audio URL közvetítése
A következő lépés a csatlakoztatott Bluetooth-fejhallgatón lejátszani kívánt hang közvetítése. Inicializálja a MediaPlayert és játssza le a streaming url-t az alábbiak szerint:
6. lépés: Az eszköz lekapcsolása
A hang lejátszásával végül végzett, és szeretné lekapcsolni az eszközt lezárni a proxy kapcsolatot, használja a következő módszert a MediaPlayer lekapcsolására és felszabadítására: