#Bluetooth is a fiendishly complicated protocol. I've used it on-and-off since about 2008 or so. #Android uses a completely different stack to desktop Linux. Things may be better on Windows, but there were as many as 3 different BT stacks for Windows (Toshiba, Widcomm, Microsoft).
Early attempts used an #ALSA kernel driver for Bluetooth… worked, but 8kHz mono is not the way I like to listen to music. And I'd imagine, unless your choice of music is 1930s swing, probably not yours either.
BlueZ (the standard Bluetooth stack on most Linux systems) pivoted across to doing it in user-space using PulseAudio. That worked okay for A2DP one-way audio, but for full-duplex audio, it is limiting. Notably, I found I couldn't get mSBC CODEC working, so full-duplex audio was 8kHz not 16kHz.
Most of the effort is going into linking #BlueZ and #pipewire, which I think will be the #PulseAudio successor (and may also displace #JACK.. as it has features of both systems).
Pipewire was written to do video actually (webcams), but then evolved to do audio too out of necessity. It's experimental, but I find works more reliably with Bluetooth. (And plays nicer with sound cards than JACK.)