We already know that between hundreds of different Android builds and handsets, Google’s smartphone OS is hopelessly fragmented, and requires immense expense and time on the part of developers to get even a simple app working reliably.
But the problem with Android — and why it’s such a bitch to develop for — goes deeper than just too many handsets and OS builds to support. Even developing a simple music app for Android is a nightmare due to Android fragmentation, because Google couldn’t even get volume control on Android right out of the box.
Evolver.fm’s Eliot Van Buskirk spoke to a developer behind a very popular but unnamed music app which is trying to come to Android. Speaking on the condition of anonymity (due to the fact that the app, despite these troubles, will eventually launch on Google Play), the developer explains why Google’s implementation of something as remedial as volume control is hopelessly broken, and leads to even more fragmentation of an already fragmented platform.
This is what is wrong with Android’s method of handling volume control, according to the dev:
1. Android OS provides just one API for volume control. The problem is, there is a need for at least two types of volume control: overall output volume and media/music volume. This means manufacturers have to implement their own way of controlling the media/music volume. Unfortunately, each manufacturer does this differently, and there’s no way of finding out how they did it until you test each individual model. To make matters worse, Samsung used an inefficient way to control the hardware and media volumes, and deliberately feeds some of the hardware output to the microphone input. This creates audio mayhem.
2. Android OS is shockingly inefficient in dealing with real-time audio. The operating system adds about a seven second delay, and the hardware adds a further five or six seconds, making the default delay 12-13 seconds overall. We have managed to reduce the real-time delay to around half a second (500ms) or less, which we believe is is the best achieved on Android to date. [Ed. note: the iPhone version doesn’t include perceptible delay.]
3. Hundreds of screen size and resolutions make it impossible to have a one-size-fits-all UI graphics set. [Ed. note: Obviously, this complaint isn’t exclusive to audio app developers, and we’ve heard it plenty of times before.]
Got that? Since Google hasn’t managed to have the foresight across four versions of Android to introduce two different APIs for volume control — one for media volume, one for overall output volume, — manufacturers have all introduced hundreds of their own crazy alternatives, which any developer making a media or music app must try to support.
And the lag! For real-time audio, the best developers can hope for is half a second delay, and that’s after a crazy and endless amount of optimizing. Unoptimized, Android will delay real-time audio by about thirteen seconds. I typed this paragraph in less. Compared to iOS, Evolver.fm commenter Adil Sherwani writes, and the difference is just shocking.
500ms is higher than the 100ms number I’d seen quoted last year but either way, 2 orders of magnitude higher than iOS which offers under 3ms hardware output latency. Add about 10ms touchscreen / accelerometer latency (very rough estimate, I don’t think anyone has published actual numbers for this), 5ms audio buffers (minimum size), and 1-2 processing time for your app, and you’re still able to stay within 20ms which seems to be the magic number for audio to feel realtime to humans.
Got that? In Android, real-time audio is actually at least half a second in the past. On iOS, though, it’s playing in the span of a blink.
Absolutely nutty. No wonder Android developers are so frustrated. And this is just one tiny example of Android fragmentation. When is Google going to get its act together?