Because of this thread (thanks), I've done some more digging on A2DP. I think I came across a great hack that applies to folks using a rooted Android device.
Here's a snippet from /system/etc/bluetooth/audio.conf in CM9 and CM10:
[A2DP]
SBCSources=1
MPEG12Sources=0
Basically, SBC stands or
subband codec and is the only codec that's required to pass audio over A2DP. Perhaps it can sound good if you mess with the bitrates, but I'm just going to assume it sounds like crap because that's my experience with it.
I changed the file to look like this a few days ago:
[A2DP]
SBCSources=1
MPEG12Sources=1
The sound is much more full, and it's not just a placebo effect. I'm currently using CM10 nightlies and flashing every day. My dirty flash routine is:
- Clear cache
- Clear dalvik cache
- Format /system
- Flash ROM
- Flash Gapps
- Fix permissions
- Reboot
Because I wipe the /system partition, I have to redo the A2DP modification every day. Yesterday, I was driving home with A2DP and it sounded poor again. Sure enough, I forgot to reboot again after editing the audio.conf file. Once I rebooted, I had good sound again.
Now, I'm not saying it's great. I haven't compared to wired AUX input from the phone, but it is noticeably better with MPEG12Sources set on in the stock Play Music app and Pandora. I don't know if the phone is now simply passing the MP3 file over the bluetooth link or actually re-encoding on the fly, but I'm happy with the results. I'm not certain why something like this would be set to off by default. Perhaps it's a licensing issue?
I would be interested in hearing from other Android users here trying this out. I edit the file in
Root Explorer ($4), but I guess you can do it from ADB if you have a command line text editor installed.