Apps were probably my biggest hangup with switching to Android, at least now that the hardware is (in the case of the Nexus One at least) slick enough to feel good in use. Apps and the fact that almost every music appliance we have at home has an iPod/iPhone connector on it anyway - more on that particular hangup another time.
So, when I got the Nexus, my first task was to find apps, in some cases equivalents to those I was already using on the iPhone, and in other cases, new apps that you can not get on the iPhone for various reasons (often because Apple doesn't let them through the approvals process).
Let's take a look at some of the app equivalents for those I used heavily on the iPhone first:
- Music and multimedia apps: I came to rely on music applications like Pandora, Last.fm, various internet streaming radio and of course the built in music player on the iPhone. Happily there are equivalents for all of these in Android, and they work better (for one thing, they continue to play music when you switch to another application). I currently have installed on Android: Last.fm (with scrobbling for music you play in other apps too!), Pandora, XiiaLive, Slacker, Listen (for podcasts, includes background downloading), bTunes (a replacement player for music on the SD card) and RadioTime. There are many more, perhaps I am missing some good ones, but these have all my uses covered.
- Next most used on iPhone was eReaders, in particular Stanza. Sadly there is no direct equivalent for Stanza yet (this is an area where Android is definitely behind right now). Aldiko and WordPlayer are both excellent reading apps, but they don't have the content deals worked out with fictionwise, books on board and others right now to be able to purchase and download books, and as much as I like reading classics, I like reading bestsellers too. eReader.com lets you buy books and has an application for Android, but it's a bit clunky - nowhere near as slick as Stanza. Kobobooks is looking hopeful too, but their reader is so immature as to be unusable (for example, it goes back to the beginning of the book each time unless you remember to bookmark it before closing the app - heaven help you if a call comes in and you forget). If Aldiko can get some content deals, or Kobobooks can improve their player, or if (as I hope) Stanza gets in on the act, it will be a great solution. For now, Android gets a C+ for effort, but eReading is something I used my iPhone for a great deal. One little bonus though is that WordPlayer will read the books out to you using text to speech - a neat feature, but of course not for best-sellers just yet.
- Next up in my list of importance is Navigation/Maps. Android is almost universally ahead here. Of course, there is the killer feature - turn-by-turn directions in Google maps (with voice, street view, etc.) but in addition there is Latitude (which was rejected by Apple). Latitude on Android rocks - it updates my position for my friends to see in real-time if I turn it on (on the iPhone, you have to visit the web page to get your position updated). Layar is another great app - overlaying the world with virtual labels for all sorts of data. MultiMap and OruxMaps have great support for OpenStreetMap data (including OpenCycleMap), and finally Google's My Tracks rounds out my favorites - tracking and recording of your rides, runs, hikes, etc. with full altitude profile and trip statistics available. Google places directory gets an honorable mention too - see what's around you - I don't use it much, but it's useful sometimes.
There are a couple of disappointments though. Surprisingly, Google Earth is better on the iPhone (no reason for it to be that I can tell, it just is - e.g. no tilt with accelerometer support on the Android one), and another app I used a lot on the iPhone - everytrail, lags significantly in features (on the iPhone it lets you search for nearby trails and download them to follow, on Android it is record and upload only!).
- Communications next - in particular messaging. Google talk is built right in to android and has background notifications, Hi AIM is a free (at least for now) AIM client that has background notifications too, and there are many other options. The GMail app is easily the best mobile gmail application I have seen. Twitter is well served - everyone knows seesmic, but I have actually been using (and slightly preferring) Twicca myself. Google voice is built right in too - wonderful online service and wonderfully integrated into Android (for example, I can choose to have just international calls routed through Google voice automatically, and it also doubles as my visual-voicemail option). Foursquare has an app that is the equivalent of the iPhone one, and the facebook app that comes with Android works just fine. Android is again ahead here in my judgement, just because of background processes and the freedom of applications to make it onto the platform :-).
- Productivity and other assorted items: the only real hole here for me is, strangely enough, Google tasks. Just like the iPhone there is the online mobile targeted site, and that works fine as long as you are online, but I was surprised there was no local app that your todo list synced to on Android, hopefully it is in the works (as I tend to live and die by gmail, calendar and my tasks list). Calendar is fine (although I feel it could do with a UI makeover), syncing to the google calendar is perfect so far, and as I mentioned above it has the best mobile gmail app I have seen, but the lack of offline tasks, as well as features like location awareness for tasks, is a hole. For notes, there is evernote, wikinotes (I had to mention it) and many others, News and Weather built in options are good, but there is also the Weather Channel app which is worth a look.
In the other assorted items category, Shazam is available (thank goodness) and works as expected (if you don't know, Shazam listens to music playing somewhere and tells you what it is). The integration with the Amazon music store is good for impulse buys too :-). Google shopper is nice for sanity checks while shopping. Photo management also shines - the ability for new services to register themselves as send options means that you can install flickr uploaders that work with all apps capable of sending a photo, or send it via twitter or IM, etc. Very slick.
- There are also some apps for which there is simply no equivalent on the iPhone, at least not yet. For example Goggles - which is like Shazam for images (take a picture, tell me what I am looking at). I mentioned My Tracks already, and turn by turn directions in Google maps. Listen - mentioned in multimedia, gives a real podcast client - one that actually just automatically downloads podcasts directly to the phone so that they are available for offline listening whenever you want. SqueezeControl gives me remote control over my squeezebox (there might be something to do this on the iPhone but I didn't think of looking before), and there are neat system features that I didn't have on the iPhone, for example I can see exactly where the power has gone since the last charge (display, apps, phone radio, background file downloading, etc.) and use it to find the battery hogs.
- I should mention games too. I am not a huge game-player, so this is lower on my list, but it is also a domain where Android is weaker than the iPhone. I was actually quite addicted to Words with Friends while I was using the iPhone, but there is no Android version so I have had to kick the habit. I do have frozen bubble, and a couple of other puzzlers on there, and I also have Shortyz - a kick-ass crossword game written by my friend Robert Cooper, which is slick and almost perfect (will be perfect when it has cryptics available).
So, all in all pretty good, with some concern over gaming - there are good games of every genre to be had, but they are not as numerous as on the iPhone, and many are not as recognizable (you don't see many licensed games, for example Shrek Kart on the iPhone). Perhaps Google should consider some gaming stimulus money, or at the very least a few "gaming on Android" articles to publicize some of the more polished options out there.
However, there are a few things that are not so great with the apps story:
The top of my list is that you can't install apps onto the SD card still. This was a limitation when I was working as an Android advocate at Google, fully a couple of years ago now, but I can't believe it hasn't been rectified yet. This means you are resource limited by the available main memory on the device, 512 megs in the case of the Nexus. It's pretty easy to fill this up when you like apps as much as I do. Cyanogenmod (which I have now installed) does let you install apps on the SD card, but this is hardly a consumer level operation (rooting and re-flashing your phone is a pretty scary operation when you actually own the phone and have to pay for a new one if you mess things up).
Games seem to be an area where Apple is well ahead. This is less important for me to be sure, but it's going to be a big factor for a lot of people. I think the games situation is complicated by the SD card issue, since games tend to be big, and that will eat up a lot of the available internal memory. Some games designers have worked around this by downloading a big glob of data when you first run it - less than ideal but it works around the limitation. Even so, the glossy games market on the iPhone is a big draw.
The polish is also just a shade less impressive than the iPhone. By way of an example - the headphone remote control (the button on the headphones that can be used to pause, and skip, music playback). It works with other applications, just like on the iPhone, but the whole thing can get a bit confused with multiple music applications running. The way I would expect it to work is that the last music app to play, or the one currently playing, will get the headphone button click event and act on it. In practice, it seems to be a complex enough outcome that it seems kind of random exactly what will happen - instead of the podcast pausing, the music player will start playing over the top, or my audio book will carry on from where I left off. As a programmer, I know these details are a real pain in the butt to get right, but as a consumer I want it to just work. Apple is good at that in spite of (or perhaps because of) their other issues (for example, an over developed sense of control :-) ).
Alright - enough downers, let's get upbeat again.
The biggest plus, and this is huge, for Android applications is that I can write my own. Sure I could theoretically write for the iPhone if I wanted to abide by the following restrictions:
- Sign up and pay $99 for the privilege (Android market costs $25 to register, but you don't even have to pay that just to write and distribute software unless you want to go through the market)
- Agree to some truly heinous restrictions about development, like having to use a blessed language (C, C++ or Objective C), Apple having full rights to allow or block anything I write for pretty much any reason they choose (they blocked Latitude and Google Voice apps for reasons yet to be disclosed, etc.)
- Develop on a Mac. I am a Linux developer, I like it that way, and I like to develop on Linux. Android development just works on Linux, it's dead easy, quick and I can use my existing skills rather than learn a whole new set of stuff which only works on one very close platform
- Agree not to talk about the Apple developer agreement ever (this is a condition of becoming an iPhone developer). Since I co-host the Java Posse and I hate any attempt to control what I can talk about there, that simply isn't likely to happen
So, since I don't want to do any of these things, I am going to develop for Android, and it's dead easy. I actually just finished my first application for Android in 2 years - Andro Flubber. I actually ported this useful utility to Android when I was at Google, but never completed it and lost the source code in the intervening years, so I sat down and did it again.
It took me about 2.5 hours from new project to running app, and maybe an extra 2 for some polish and extra features (like sound, custom background image, etc.). I have since put the source code up on github, and the application up for free on the Android market. The details are:
Name: Andro Flubber (not the best name, but I had to call it something) - a Flub is a mistake in recording, therefore flubber tracks mistakes, and Andro for Android.
Description: marks mistakes on a timeline while recording a podcast, and then emails you a list of the mistakes in the audacity bookmarks format, so you can see where they are in post-production and edit them out.
Source Code: available from github at http://github.com/dickwall/AndroFlubber, not exemplary yet (I should sprinkle in a comment or two, probably some best practices not being observed), but it works and can be improved on. I chose to theme it with the Java Posse logo and put in some other features specific to the podcast, but you can fork the code and customize it yourself if you desire.
App on Marketplace: You can use the barcode scanner on the 2d barcode above to download it, or just go to http://apps.doubletwist.com/Andro-Flubber/-5965901916352705395 or look for Andro Flubber on Android Market from your phone. Right now it requires Android 2.1 - this is just cos I need to download and verify with earlier versions of the API which I will do in due course, but for now I just wanted it to get out there.