Cover Art Downloader for Android is an App that magically adds album artworks to the media present on your Android device. Cover Art Downloader is amazingly helpful, unique and makes music feel better. In this DevDialogue with TheAppleGoogle, Stewart Gateley shares his thoughts on the openness of Android, the future of the App and even the platform war between iOS and Android.
How did you conceive the idea for the App?
Music is a very important part of my life and was a big reason for adopting the Android platform beginning with my pre-order of the G1. It was instantly apparent however, that the media applications on Android were lackluster and dealing with album art was very difficult, so I had the idea for this app from day-one of Android. A few other applications beat me to market and claimed to have similar functionality, but they were expensive, buggy, slow, lacking features and most importantly, often failed to find matching album cover art for my music collection. I didn’t let the other apps discourage me, in fact, I was able to learn a lot from their missing features and market comments, and made sure that I added the features people cared about the most and didn’t make the same mistakes in Cover Art Downloader.
What are your thoughts on the openness of the Android platform?
Android is not Open Source in the true sense of the word. They only provide read-only access to the source after the final release, and do not accept commit or patches from anyone outside the Open Handset Alliance. This limits Android a bit, and slows the rate that bugs are fixed or features people want are added. However, the openness of Android makes it the perfect mobile development platform and none of my current (or planned applications) would even be possible on other mobile platforms. For instance, your music on iOS is locked behind iTunes and there is no framework available to access or modify the music files and database outside of iTunes running on your Mac or PC. On iOS, there also is no way my app could be notified when new music has been added to the device and then start my app running in the background to automatically retrieve cover art for the new music. The openness of Android allows for some very creative and functional applications to be developed. It has even been suggested that people are using Cover Art Downloader as a desktop replacement because of its speed and simplicity, or to correct mistakes made by iTunes.
Can you give us a sneak peek into the future of Cover Art Downloader?
The input I receive on Cover Art Downloader right now is very positive and my users are happy with the way it currently works, so I don’t want to go about making any drastic changes that may have an adverse effect on it’s usability or reception. I am always monitoring its performance and I will make any changes needed to make sure it stays accurate and reliable on new devices and Android releases. The next major change to Cover Art Downloader, however, is the addition of an album editor / id3 tag editor and a few minor changes to the UI. I have also been looking into the possibility of a new tablet and TV specific UI to work on Honeycomb, and toying with the idea of adding Chrome to Phone support or maybe a live wallpaper bundle.
Do you believe that the development tools and resources provided by Google is enough or could Google have offered better things to support its developers?
The whole organization of the Android framework is the best I have ever seen. Actions, Intents, Broadcasts and Services all just flow together to make it a very simple and powerful platform unlike anything else. I have heard from other developers that also do iOS and Blackberry development that a change which could take 2 weeks on iOS or Blackberry could be done in 2 days on Android. It’s all just a matter of knowing the framework and being comfortable with the environment. Eclipse, the ADT plugin, the emulator and ADB are all great tools indeed and make getting comfortable pretty simple. The best thing is that you can build, test and publish your software using any computer instead of being tied down to a Mac and you can run your applications directly on any device without first getting approval and paying more money. The ability to distribute your apps or test builds directly to customers or beta testers makes multi-device testing a lot easier and cheaper.
Picking up the essentials of Android development is simple. Even if you have very limited development experience, you can grab a book or follow the online tutorial and start writing apps the same day. I think the simplicity in setting it up is a bit misleading though because mastering the framework (or even just the subset you need for your app) will take a long time and can be very frustrating. The online documentation, while complete, can be pretty lacking in examples and best practices. Having access to the source code for Android and the default apps becomes an invaluable resource, but it’s not for the faint of heart. When you do get stuck there are a lot of helpful people on IRC and StackOverflow willing to give advice provided you at least make some attempt to understand it.
The two biggest things I think they could add are the ability to connect with your users and to be able to test your software using alternate environments such as Sense, TouchWiz or MotionBlur. Samsung has just released a Galaxy Tab skin for the emulator but it still runs stock Android which is very different from the UI and applications installed on the Tab.
People say that Android is fragmented and that the different types of phones with different hardware and screen sizes make it difficult for a developer to develop an App in such a fashion that it would be compatible with different screen sizes. How would you describe your development experience?
I think the whole issue around “fragmentation” is severely blown out of proportion. It definitely exists to some degree, but it’s not what it’s been made out to be. I have had a lot of software related issues on Cover Art Downloader and other projects, but it always ends up with me refactoring the problem code and the project comes out better as a result. With most devices getting upgraded to Froyo these days, the software issues have seemed to mostly diminish. It is still important to test on as many devices as possible, but once you become a respected developer, people will be begging you to beta test new releases on their phones, and you get great feedback as a result.
One area where software does become a big issue is in the media framework. Since Android is still lacking (even on Gingerbread), all custom software vendors have made their own implementations of the media framework, and the changes go very deep. I have decided to pull Dynamic Playlist, my favorite project, from the market because of it, and I hope to release it again later as a WinAMP and doubleTwist plugin. I am sure there are other areas of the framework I have yet to explore that have similar issues.
None of my applications are CPU or GPU intensive, so they are able to run reliably on nearly all Android devices, but memory management has been something I have had to focus on a lot. You need to pick your lowest supported device from the beginning. For Cover Art Downloader, that was a G1 running 1.6. I think Rovio was a bit foolish thinking they could get one version of Angry Birds to run on every device and they rushed it to market without any testing. If you are writing the latest and greatest game, you will need the latest and greatest hardware to run it. Just as with computer games, you can’t expect a new release to run smoothly on a two year old netbook; it’s just not going to happen. The good thing is most people upgrade their smartphone at least every two years.
Tablets and televisions are something that Android does not natively support just yet. Gingerbread helps a little, and Honeycomb is bringing some awesome new features, but many applications will need modification to support phones, tablets, netbooks and televisions all with the same codebase. Google has been pushing the issue to developers on how to support multiple resolutions since the first SDK release and gives great examples on how to do so. As long as you follow “best practice,” Android apps can scale really well, which is why you don’t have as many people complaining about software running on Android tablets. Cover Art Downloader looks and runs great on the Galaxy Tab without any changes.
It’s worth mentioning that all mobile platforms are affected by the same variances. You have four generations of iPod Touches, iPhones and iPads all running different versions of iOS, with or without rear-facing or front-facing cameras, with different screen sizes and resolutions, different processors and memory capacities, with or without background tasks or other features. To be honest, I think Android actually has the upper hand, because they have a good system in place for specifying your hardware or software requirements, and it is entirely possible to target phones, tablets and other devices without maintaining separate code-bases and releases. As long as you do it correctly from the beginning, your applications will be compatible with future Android releases and devices.
In closing, whenever asked about Android “fragmentation”, I usually state that it is a lot easier to deal with different Android devices than it is at my day job as a web application developer, where I must work with even greater variances in hardware, software, plugins, screen sizes and browser versions. I usually then tell them to grab a dictionary to find out what fragmentation really means.
In the iOS vs Android war, who according to you would come out as a winner?
Apple is still going strong and it is hard to argue against it being the most profitable mobile platform for independent developers and the first choice for businesses to release their apps. iOS gives its users many benefits including a quick, simple and seamless interface, which many people prefer. It also integrates well with their other products and many people have made significant investments in device accessories and iTunes purchases.
On the other hand, Android is experiencing significant growth and, against all attempts, Apple has not been able to slow it. Businesses are now releasing their apps either in tandem for both platforms or with an Android version following just behind their iOS release, and, more and more independent developers have chosen to drop the Apple App Store and the walled-garden approach in favor of the more relaxed Android Market. I think the Android platform offers more choice for users, and it gives developers the ability to be more creative and create more engaging applications such as Cover Art Downloader.
In the end, there doesn’t need to be a war between the two platforms. They both offer their users many distinct advantages and I see no reason the two platforms cannot co-exist. Certainly neither will become obsolete in the foreseeable future.