For a long time, the main difference between Android and iOS was polish. Both systems offered roughly the same basic features, but iOS just did them better. Scrolling was smoother, the visual design was more consistent, the keyboard worked way better, and so on. While the difference is still there today, it is much less noticeable than it once was. But there are still pockets of awfulness in Android, and one of these pockets is how it deals with audio.

Let’s first look at how this works on iOS. Audio is integrated into the OS extremely well. Regardless of the application that plays the audio, you get lock screen controls, and headphone controls. Swipe up to get a media control UI that works with whichever app is currently playing audio.

Want to pick where audio is sent to, whether it’s sent to an AirPlay device, a bluetooth headset, or the built-in speakers? There’s a single UI element that unifies all of these features, and works consistently across apps.

None of these things are true on Android.

Lock Screen

Controlling audio from the Lock Screen is hit-or-miss. Sometimes, apps manage to put controls on lock screens. Other times, they don’t. On my Note 3, this even depends on which lock screen it is. If my case is open, lock screen controls sometimes work. If the case is closed, and a smaller lock screen is available through the case’s window, only Samsung’s own audio app can be controlled.

Of course, sometimes the audio controls don’t show up at all. Sometimes, the lock screen shows an image of the audio that’s playing, sometimes it doesn’t. Oh, and sometimes it does everything at once, with multiple different apps seeming to struggle for control of the lock screen, which results in this:

Yep, I made a looping animated GIF to help you get an impression of how incredibly annoying this is.

Controlling Output

There’s no real output control. If the phone is connected to a Bluetooth device, audio comes out of that device. Otherwise, it seems to be completely up to the app. Some applications support things like Chromecast, others don’t. Because there seems to be no unified way of dealing with audio output in Android, every app handles it differently, and every app supports different features at different levels of reliability.

Play and Pause

Android supports wired headphones with play/pause buttons in principle, but for me, they’ve never worked reliably. Sometimes, I’m listening to a podcast, hit pause, wait a few minutes, hit play, and nothing happens. Android has completely forgotten about the fact that I just listened to a podcast a few minutes ago.

Or it starts audio from a different app. Listen to The Skeptic’s Guide to the Universe in Pocket Casts, pause, play, now I’m listening to The Girl with All the Gifts in Audible. Uhm… thanks? At least that’s better than hitting play/pause, and, instead of pausing the current app, another app starts to play, so that I now have two different apps playing audio concurrently. Yes, that has also happened.

The controls on one of my two Bluetooth headphones don’t really work. Play and pause never works, at all. Forward and backward only work sometimes. Other times, they don’t register, or have seconds of lag.

The controls on another pair of headphones, weirdly, seem to work better, as I can usually play and pause. But even with that one, they’re not reliable.

Notifications

Since there seems to be no unified, OS-supplied way of controlling audio in Android, every app pushes its own controls into Android’s notifications. So you’ll end up with situations where you have three (or more) different audio controls on screen at the same time, all of which behave differently. Which can be nice for switching between different audio sources — except that some of them only show up when their app is already playing audio, while others can’t be removed at all.

Either way, you can easily end up with a full screen just showing different audio players, and that’s on a Note 3. I pity the fool with a smaller screen.

More Bugs

Other, non-audio Bluetooth devices interfere with music playback. Music pauses whenever my Withings step tracker auto-sends data to the phone. It also pauses when my phone connects to the Pebble or loses connection to it, which happens almost every time I leave the house or come back.

One final annoyance: I usually use my Bluetooth headphones to listen to Podcasts. When I have to talk to somebody, the easiest thing to do is to just turn off the headphones; that also preserves its batteries. However, when I do that, Android doesn’t immediately stop the audio when the headphones turn off. Instead, suddenly, a tiny John Siracusa is in my pocket, loudly complaining about HFS+ for five or six seconds, until Android finally figures out that something is wrong and turns him off.

I really love a lot of the things Android offers, and in many ways, its user experience is now so close to what iOS offers that the UX differences between the two are really a matter of taste. I’m also happy about where Android is heading in the future. But the way audio works in Android right now is just abhorrently broken. Playing audio is a basic feature that should just work. As of right now, in Android, it does not.

Obligatory Defensive Note

This is the obligatory defensive note acknowledging that my experience with audio on Android may not be representative of other people’s experiences, particularly if they are running a different version of Android. I’m sure that there are a lot of people who have no issues with how Android handles audio, and I’m happy for them. I’m just not one of them.

Addendum: Android 5 has new APIs that might fix at least some of these issues, once people actually have phones with that system, and the apps are updated for the new APIs.