From iPhone to Android

A few weeks back, I decided I needed to replace my aging iPhone 3G.

I got the 3G when it first came out. My roommate at the time and I spent quite a while waiting in line in front of the Apple store, only to be told when we were two places from the door that the stock for the day had been sold out. t took several more days of waiting in line before we were able to get our hands on one.

The iPhone 3G was the first smartphone I’d ever owned. I’ve been a cell phone user for quite some time, since the days of giant handsets with one-line LED displays, but I’d never owned anything even remotely approaching a smartphone before. For me, the iPhone was a game-changer. I have a notoriously bad sense of direction–it is not impossible for me to get lost just a few blocks from my home–and the GPS feature alone in the iPhone was a huge improvement in my quality of life.

Having real Web access was also a big deal. I do a lot of IT work, and the ability to get a call from a client and check the client’s Web site right there on the spot even if I’m not in front of a computer is huge.

But over the past few months, the 3G hasn’t been cutting it for me. The GPS is getting a little wonky, and the battery isn’t holding a very good charge any more, and the iOS 4.2 update made the phone feel a bit sluggish. On top of that, the amount that AT&T was charging me every month was enough to give me a nosebleed.

I spent a few weeks looking at several options: upgrading to an iPhone 4 and staying with AT&T, upgrading to an iPhone 4 and jumping to Verizon, and getting an Android phone.

Then Google announced the open hardware development kit for Android, and that significantly tilted the balance toward Android. The Google hardware kit for Android phones is based on the Arduino prototyping board, which I already have experience developing and programming for.

I went into T-Mobile and found that I could save quite a lot of money every month with a contract from them if I went to Android, so that’s what I did.


The phone I got and will be talking about here is the HTC Sensation 4G, running Android 2.3. It’s been an interesting, and at times rough, transition. I’ve been surprised by a number of things about Android, both pleasantly and unpleasantly.

But before I get into that, let me talk about what Android isn’t.

OPEN: IT’S THE NEW CLOSED

Android isn’t a religion. To hear many folks talk about it online, you’d think that the choice of cell phone operating systems was a religious or philosophical choice. Android, we’re told gravely, is “open.” The iPhone operating system is “closed.” To use Android is to celebrate freedom and democracy and other wonderful things; to use an iPhone is to toil under tyranny and totalitarian rule.

It’s hooey, of course. Android isn’t open, at least not in the way the religious folks say it is.

Oh, it’s open in the sense that the source code is available, kind of, eventually, when Google says it is. This sort of freedom isn’t really equal, though; Google decides who gets it when, and which partners get to have it first.

But the thing to remember is that from the perspective of the folks who make cell phone software, you aren’t the customer. The handset makers are the customer. Android is open–for them. You, as the person who buys the cell phone, get exactly as much freedom and openness as the handset maker lets you have.

On my HTC Sensation, for instance, the cell phone bootloader is locked down tighter than a nun’s–ahem. It was possible, if I wanted to, for me to jailbreak my iPhone. My Sensation? Nope, no can do. Not even the Cyanogen team has figured out how to root it yet.

The same is true for some other Android phones as well. Supposedly, HTC has had a change of heart and will be unlocking its phones in the future. It’s not clear whether this will apply to me; I’ve read one article online that says all HTC phones will be unlocked, and another that says only HTC phones not tied to a particular network or under contract with a particular carrier will be unlocked.

On the iPhone, the fact that I could, if I chose, jailbreak my phone never mattered to me; I never saw any good reason to. With Android, the fact that I can’t jailbreak it is kind of a bother, and that brings me to the second issue with Android.

SON OF THE REVENGE OF CRAPWARE: IT CAME FROM BEYOND THE GRAVE

With Android, we’re told, there is more openness in software, too. Android programmers do not have to go through any particular approval process to get their apps on your phone. The iPhone App Store is tightly regulated; apps that Apple doesn’t like aren’t available. The Android app store is an open bazaar; anyone can make any sort of app at all.

That’s not 100% true. The carriers have coerced Google into removing apps they didn’t like from the Google app store.

More to the point, though, the openness is really more for the handset maker’s benefit than for yours. With Android, we are back to the bad old days of Windows XP and Windows Vista, where each computer maker tended to stuff their computers so full of demos and third-party software and their own support applications that the term Craplets (crap applets) was devised to describe them.

Most computer manufacturers came to their senses, eventually, and cut it out. It didn’t help that some of this crapware, like HP’s support application that they bundled onto their computers, contained security vulnerabilities that let hackers pwn HP computers.

But Android phones often come so stuffed with pre-bundled crapware that, in my case at least, nearly half the available application memory is occupied right off the bat. Worse, unlike desktop crapware, the Android crapware can’t be removed without jailbreaking the phone. I’ll talk about some of that crapware in a bit.

So my experience with Android has been interesting. In the rest of this post, I’ll run down the differences I’ve found between using an Android phone and using an iOS phone, and rate the quality of everything from the handset design to the apps to the user interface. If that sounds like your thing, click here to read more!


PART I: THE PHONE

Design and form factor

A lot of folks really like to imitate Apple’s industrial design.

The first iPhone had rounded corners, a flat front, and a metal half-shell over the back. This design choice is eerily familiar to Amazon Kindle 2 owners:

My HTC Sensation is very similar in design to my old iPhone 3G. Rounded corners, a front glass face, a curved black plastic shell on the back… It has some refinements, like beveled front glass that’s actually quite nice, but its form factor is almost identical to old iPhone generations.

With the iPhone 4, Apple moved away from that design, in favor of flat front and back pieces made of tempered glass. It’s a great design; I know two folks who have dropped their iPhone 4s and subsequently run over them with cars. Leaving aside for a moment what that says about my friends, the fact is both iPhones survived without a dent. Running over the Sensation would surely destroy it, which is the reason I opted for the insurance on it.

The iPhone also has a switch on the side that can be used to mute the phone. This is such a clear and obvious user interface win that it still boggles me more phones don’t do this. I can silence the phone without looking at it or even taking it out of my pocket–for example, when I go to the movies, as I invariably forget to turn off the ringer until the movie screen tells me to. Silencing the Android phone is a multi-step operation that shouldn’t take as long as it does.

Camera

On the other hand, the camera in my iPhone…hmm. How to put this delicately? It’s a howling pile of dog crap, barely worthy of the name.

Later generations of iPhones have better cameras, and with the iPhone 4, the camera finally rose to the level of “not half bad.” The camera in my Sensation, on the other hand, is the best I have yet seen in a cell phone: high res, with a twin-LED solid-state flash and surprisingly good autofocus. In this day and age, when you’re spending a wad of dough, this should be the absolute minimum you expect. The iPhone’s camera is embarrassingly bad by comparison.

Sadly, the built-in camera software lacks an HDR mode, which is one of the nice things about the iPhone’s built-in camera. I’ve downloaded an HDR app, but it’s slow and clunky.

The Telephone

Apple became popular because it discovered something that Nokia didn’t know: user interface matters.

The iPhone is, at best, a mediocre telephone wrapped in a good UI. It has never been that great a phone, and for a long time it was shackled to a US cell phone carrier that only rose to “mediocre” on its better days.

Nokia, by way of comparison, has always made incredibly good telephones wrapped in a user interface that is stunningly awful.

And, not surprisingly, Apple won and Nokia lost. Why? Because it doesn’t matter if you make a monster 600-HP sports car that will do 0 to 60 in 3.6 seconds, gets 58 miles to the gallon, and corners on a dime if you have to steer it with levers mounted on the ceiling behind the driver’s head and the brakes are attached to a rod that you lean over and pull from between the seats to activate. Nokia’s cell phones give you a user experience a bit like getting a root canal while you’re riding in a hot air balloon through a Category 4 hurricane. The market spoke, and it said that people would rather have a crap phone with a good user interface than an awesome phone with a crap user interface.

I was disappointed to learn that the HTC Sensation is, like the iPhone, a pretty mediocre telephone. The maximum volume on the phone and ringer isn’t high enough, and the speaker sounds quite a bit more tinny than the iPhone. I genuinely expected it to be a better telephone simply because I didn’t think it’d be worse. I was surprised.

The one thing I do like about the Sensation is that I can turn on the speakerphone simply by flipping the phone over and setting it down face-down. This is a clear and obvious user interface win that, like the hardware mute switch, really should be standard issue on any smartphone.

Battery

One of the reasons I wanted a new phone, aside from AT&T’s stratospheric price, was that the battery in my 3G was beginning to fail. The iPhone 3G has a 1150mAh battery, which at the beginning of its life was sufficient for two or three days of average use (including quite a bit of Twitter and Web browsing). In the last few months, that life was about half what it had been.

The first time I plugged in the Sensation, it took forever to charge. I took that to be a hopeful sign; surely, thought I, that meant it had a very high capacity battery.

Sadly, no. The Sensation has a more powerful processor than the iPhone, and a higher-resolution screen, but its battery is only marginally larger at 1520 mAh. The Sensation takes forever to charge, easily three times longer than the iPhone, but its battery lasts about the same amount of time the iPhone 3G was lasting when it was failing. I find I need to charge it daily, with the use I put it to.

Part of this is the design of Android and part of it is the crapware bundled on the phone, which I’ll get to in a bit.

Screen

When the iPhone 4 came out, a lot of folks talked about its high-density “Retina display,” which is claimed to offer greater pixel density than the human eye can actually distinguish at normal reading distance.

It’s a gorgeous display, no doubt about it. The Sensation uses a very similar display, with nearly the same pixel resolution (960×540 pixels, vs. 960×640 for the iPhone 4). The screen on the Sensation, as I mentioned before, is beveled inward, which means that it won’t scratch if the phone is set face-down. It also makes the touch-screen a joy to use.

This new generation of high-density screens is significantly better than older screens, and the bevel is a very nice touch. The screen on the Sensation is easily the best I’ve ever used.

4G

The Sensation is a 4G (HSDPA) cell phone, which uses a newer and faster data connection than the 3G in the iPhone. It probably doesn’t need to be said, but its data connection is fast. Much, much faster than I expected. No shit, his thing is about as fast as a broadband cable connection.

Except when it isn’t.

AT&T doesn’t have the best Internet coverage, but T-Mobile’s is worse. When I went to San Francisco last weekend, I frequently found myself without 4G coverage, and sometimes found I had no signal at all.

When the 4G signal isn’t available, the Sensation doesn’t fall back to 3G. Instead, it goes all the way back to the 2G/EDGE standard, which is only marginally faster than smoke signals and doesn’t have near the bandwidth of messages tied to homing pigeons.

I have great 4G coverage in Portland, though, and when I do, it’s awesome.

Storage

The iPhone 3G came in two flavors–one with 8GB of flash memory and a 16GB model at a significant price premium. The iPhone 4 comes in two flavors as well, a 16GB version and, at a significantly higher price, a 32GB version.

That’s generally the way it is with Apple. Savvy Mac buyers know to avoid the premium price Apple puts on RAM by buying the computer with the smallest available amount of memory and buying inexpensive thrid-party RAM later. Sadly, you can’t do that with an iPhone.

The Sensation has a gigabyte of built-in storage, and an additional 8GB on a SD card. The SD card is easily swapped, and bumping the Sensation up to 32GB is quick and inexpensive to do.

This is an epic win on the part of the Sensation. User-swappable, user-upgradeable storage is a huge leap over the soldered-on flash memory in an iPhone.


PART II: THE USER EXPERIENCE

Lock Screen

You wouldn’t think there’s a lot to say about a cell phone’s lock screen. You push a button, you slide your finger on the screen, and you use the phone. The iPhone has its iconic “Slide to Unlock” doodad that’s become a bit of a cultural touchstone; the Sensation has a ring that you pull up to unlock the phone.

The nice thing about the Android phone–and it is, as it turns out, a very nice thing–is that you can put four functions you use often (such as text messaging, camera, phone, and the Web browser) on the lock screen, and access them instantly by sliding the icon to the lock ring.

I wouldn’t have thought that’s a big deal, but it is. Being able to unlock the phone and go straight to where you want to go is a pretty awesome user interface win.

Home Screen

I make a category for this simply because I can’t let the default Android flip-clock home screen go.

Somewhere, some Android developer loves this old-fashioned flip-clock display. That designer needs to be found and beaten. It’s not retro, it’s not cool, it’s ugly and it takes up way too much space. Fortunately, it’s easy enough to get rid of, when you know where to look for it, which brings me to…

Phone settings

Android has the same problem that Linux has, which is that it’s…well, err, Linux.

Every Linux distro I’ve ever used–and that includes, at last count, Gentoo, Red Hat, Fedora Core, Ubuntu, Yellow Dog, mkLinux, LinuxPPC, Kubuntu, Debian, and Mandrake/Mandriva/whateverthehell they’re calling it today–has suffered from a certain lack of coherence about where one is supposed to go to change configurations and system settings.

Android is the same way. There are settings that are changed in the Settings app, settings that are changed in the Personalize menu (which often overlap), settings which are changed in the Setup app (not to be confused with the Settings app), and settings which are set in phone or carrier specific apps like the My Account app or the T-Mobile Settings app. Some of the settings present in Android are disabled by some carrier, or relocated to carrier-specific apps. Some settings can also be changed by pulling down the screen to reveal the Notifications and Settings area. And it’s not always possible to anticipate which setting is located where.

This is a significant user experience fail, and one that I don’t see getting any better, as the carriers all have their own ideas about which settings the user should be allowed to access and from where.

Controls

Every iPhone has featured only one button other than the lock switch and volume/mute controls, and that’s the iconic round Home button. This exits a running app and brings the user to the home screen, or if the user is already on the home screen it brings up the search bar.

Android devices have four buttons: a Home button, a Menu button, a Back button, and a Search button. I’m not convinced this is an improvement.

In theory, it ought to be. In practice, it’s not.

The Home button and Search buttons are obvious. Having a dedicated button for search seems to be placing an awfully big priority on a somewhat trivial function, but Google is all about search–well, advertising and search, and also email and cloud apps and social networking, but mostly advertising and search–so the focus can be forgiven.

The Back and Menu buttons are a mess.

The Back button takes you back to the last function you used in an app, except when it doesn’t. The way it works varies by app–in Twitter, for example, it will bring you from the screen where you post a tweet back to the timeline, but if you go from the timeline screen to the Mentions screen, it won’t bring you back to the Timeline screen, it’ll exit the application. Which is a bit tricky, that–if you hit Back too many times, it takes you out of the application and back in whatever application you were using before, with no corresponding Forward button to bring you back.

If there’s a soft keyboard up on the screen, the Back button makes it go away. When you’re browsing, the Back button takes you back a page unless you’re at the start of the browsing history, in which case it exits the browser. Clear, right? The Forward button in the browser is concealed under the Menu button, however.

The Menu button is a bit hodgepodge. It’ll bring up a menu, which is usually iconographic except when it’s text, or when it has an icon that brings up a second menu that’s text. The Menu button contains everything from a web browser’s Forward button to application settings to Twitter’s sign out button to the Compose button in the text messaging app (which is also duplicated at the top of the screen).

The Menu button is the user experience of the junk drawer you have in your kitchen that’s filled with toothpicks and assorted screws and a half-used roll of tape with a broken dispenser and that little L-shaped metal thing you found behind the refrigerator and don’t know what it is; it’s a place for designers to put stuff that they can’t think of a better place for. That, in turn, encourages sloppy design. I’ve consistently found that apps on iOS, where the designers don’t have a Menu button and are therefore forced to think about where to put the app settings and how to arrange them, are better thought-out in this respect than the same apps on Android.

And having a browser with a dedicated Back button but the Forward button concealed under a Menu button is just lame.

Keyboard

Like the iPhone, my Sensation has no physical keyboard, only the touch-screen keyboard.

It’s almost the same as the iPhone’s keyboard, different only in subtle ways. Unfortunately, all those subtle ways it’s different make it inferior.

First, the keys themselves. A lot of programmers don’t know this, but the choice of typeface matters. The iOS keyboard, with its thicker, bolder typeface, is significantly easier to read than the spindly letters on the Android keyboard. Readability isn’t helped by the fact that the Android letters have the symbols that you get when you switch into numeric mode printed over them.

I know why they did this. They did it because you can press and hold a key and the symbol equivalent will pop up along with the accented variants of the letter. I rarely use this feature, because it doesn’t seem significantly faster than just hitting the button to switch to the numeric mode.

Like the iPhone, the Android keyboard has two numeric/symbol modes aside from the alphabetic mode. Unlike the Apple keyboard, it has keys dedicated to smiley characters like 🙂 and ;).

There’s a Venn diagram showing the relationship between nerds, geeks, dorks, and dweebs floating around the Internet. I don’t know who made it, but according to this diagram, the person who designed the Android keyboard is a dork:

I say this because the 🙂 key is utterly, completely, ridiculously pointless. To type a 🙂 the old-fashioned way, you hit the numeric shift key, then the : key, then the ) key, for a total of three key presses. To use the 🙂 button, you hit the numeric shift key, then the 1/2 key, then the 🙂 key, for a total of…three key presses.

Dork.

Autocorrect

There’s an entire Web site dedicated to the often hilarious ways in which cell phone auto-spell-check can go wrong. I’ve even had a few myself.

If someone were to combine the iPhone autocorrect with the Android autocorrect, we’d probably have something that worked pretty well. The iPhone autocorrect, if it sees a potential misspelling, will put its own best guess right above the word you’re typing, where it’s easy to see; but the user has no direct way to add words to the spellcheck dictionary, and if there’s more than one possibility for a misspelled word, the iPhone won’t show them to you.

The Android spellchecker will put its best guesses for what you’re trying to type directly above the keyboard, in different colors–green for words it recognizes, orange for words it doesn’t. You can add a word to its spellcheck dictionary just by touching a word hilighted in orange. This direct control over the dictionary, I find, makes it less likely that you’ll add things you don’t want to, and more likely that you’ll add words that you do.

On the other hand, there is one embarrassing flaw in the Android spellcheck that’s so awful I am boggled that it has persisted through two major OS releases and several minor releases: the spellcheck does not recognize that words can contain an apostrophe.

Yep, you read that right. This is just appallingly stupid on the part of the Android programmers. If you start to type a word like “you’ve”, it will treat the apostrophe as though it were a space, and “see” it as two words: “you” and “ve”. Since “ve” is not a word, it will try to autocorrect it to “very”. If you’re not paying attention, “you’ve” becomes “you’very” (and “you’re” becomes “you’red” and so on).

So the Android spellcheck wins out over the iPhone spellcheck for its flexibility, but damn. C’mon, guys. Learn what an apostrophe is.

Multitasking

Everyone makes a big deal about multitasking. iOS doesn’t have it, we’re told; Android does.

Actually, that isn’t entirely true. iOS is built on Mac OS X, which is built on BSD Unix; it is an inherently multitasking operating system. And in fact both Android and iOS multitask well, and always have.

What iOS has not (until recently) done is allow third-party apps that run in user space to continue to run even when they are shifted to the background. Apple apps, like the music player app, can do this, and of course operating-system-level tasks do it all the time, but userland apps can’t. Instead, they are required to save their state and exit when the user hits the Home button.

There’s a reason for that. Apps that run in the background consume system resources. On a phone, that means battery power and possibly network connectivity.

On Android, hitting the Home button doesn’t exit an app; it stays running. That means that as you use the phone, the number of running apps steadily increases. Android developers say that it doesn’t matter; I’ve found that it does. Android comes with a Task Killer app that you use to make an app quit running, like, for reals…though it does not work with, and does not even show, the bundled crapware apps that the handset makers and/or the network operator shovel onto the phone.

If I don’t periodically quit running apps with the Task Manager, my battery life suffers. Worse, network apps that are running in the background keep generating network traffic.

There are few applications that actually NEED to keep running in the background. Music-player apps do, of course, as do GPS navigation apps. And newer versions of iOS permit a developer to specifically develop an application in such a way that it can run in the background.

But most apps don’t need to do this. Saving the app state and exiting is just fine. In fact, it makes for a better user experience, I think. Running any app in the background is the kind of thing that developers and geeks love, but that the huge majority of normal users never notice except when their battery life starts to suck. And expecting a normal cell phone user to know when to use the task manager is ridiculous. Operating systems ought to take care of that sort of stuff so that the user doesn’t have to.

Backgrounding is something only certain apps benefit from, and in a cell phone environment it really ought to be available only to those apps that need it.

Fragmentation

Android has it.

A zillion different handsets, a zillion different hardware vendors all clawing to make their Android phone stand out from the crowd, a zillion different carrier and handset maker app bundles. This is a recipe for product fragmentation, and sure enough, it’s a problem.

Want to run Netflix on an Android phone the way you can on an iOS device? It’s available, for only a few specific handsets, and only if you haven’t rooted or jailbroken the phone. My HTC sensation isn’t one that Netflix is available for.

Want to run Angry Birds? Hope you have a reasonably muscular phone; it runs well on some, poorly on others, and not at all on others.

The Android App Store tries hard to conceal apps that won’t run on your hardware and/or software, and for the most part it does OK. But it is still a problem for users, and a nightmare for developers (to the point where the Angry Birds developers considered developing different versions for differently-abled handsets, and at one point actually mulled not developing for Android at all.

This issue gets even bigger when you want to run apps that interface with hardware directly, such as camera apps. Take Camera360, for example, which displays this dialog on running:

User experience? This isn’t the way to make it a good one.

Syncing

This basically comes down to which one you find less odious–running iTunes or letting Google keep all your stuff.

Syncing with Android is basically non-existent. The phone doesn’t ship with a desktop app to sync with your computer. Instead, Android really wants you to have a Google account. It really, really wants you to have a Google account. It syncs your phone to your Google account, and once it’s there, you can access it from your desktop by connecting to Google, right?

iTunes, by way of contrast, is an okay bit of software on Macs and pretty bloated and awful on Windows, but it will sync your entire phone’s contents with your desktop and even make encrypted backups on your desktop if you like.

I’m the sort of person who likes to know there’s a backup of my stuff in places where I can control it, so I really like the ability to sync directly to my computer, without going through Google to do it.


PART III: APPLICATIONS

Applications on Android are a mixed bag. The highs are higher, but the lows are lower. There are some astonishingly awful Android apps out there–and sadly, a lot of them are the apps that come with the phone. The ones that work, work really, really well, though.

GPS navigation

This is something I use a lot, and it’s a place where Android really shines.

Google Maps and Google Navigation on Android rock. They’re just amazing. These are examples of how all cell phone apps SHOULD work. The Google Navigation is not only head, shoulders, torso, bellybutton, hips, thighs, and kneecaps above the GPS navigation app on the iPhone, it’s better than any standalone GPS gadget I’ve ever used.

It’s a bit fun to listen to the synthesized voice struggle to pronounce “southeast César E. Chávez Blvd” here in Portland (it gets the pronunciation and the word breaks comically wrong), but that’s an extremely minor nitpick.

The GPS navigation is so good that it almost makes it worth switching to Android just by itself.

Web browsing

Unsurprisingly, the built-in Web browser on Android is Google’s own Chrome.

Surprisingly, it’s really not a terribly good mobile browser.

It’s okay, and in a world without Safari on iOS it’d be fantastic…but this isn’t that world, and next to Safari it looks a bit clunky and ugly.

The history, address autocomplete, and favorites are all clumsier than they are on Safari. It’s faster, owing most likely to the Sensation’s dual-core 1.2GHz processor and 4G connection, but it has some strange behaviors. Leaving aside the poorly-designed back and forward buttons I mentioned earlier, it also tries just a little bit too hard to reformat Web pages for a small screen.

Safari is quite nice to use on a small touch-screen. Tapping a column of text zooms in to make that column fit the screen; pinching and zooming take the whole page and zoom in or out. Chrome on Android, on the other hand, actually changes the width of text columns on the page to make hem fit the screen. This has the effect of totally changing where the text is in relation to other elements like pictures, and totally reflowing text as well.

On some pages, this works. On other pages, it doesn’t. I understand why the designers chose to do this; they’re attempting, in a heavy-handed way, to try to maximize the readability of text on the phone’s screen. However, what they end up doing in many cases is moving text around and reflowing it to the point that the Web site can actually be difficult to understand, as the text no longer flows the way the Web designer intended. It can even end up scrambling menus on some Web pages, or leaving strange blank gaps on others.

Safari for mobile is still, for me, the best example of how to implement a Web browser on a cell phone. Chrome tries too hard, and tromps all over Web pages with heavy boots, sometimes distorting pages to the point that they become less readable rather than more readable.

Mobile Firefox is just yuck. Sorry, Firefox fans.

Music

There are two kinds of portable music players in the world: “Apple iPods” and “everything else”. iPods seem to have about a zillion percent of market share, with the “everything else” begging for scraps.

There’s a reason for that: User interface matters. Apparently, user interface for a music player is hard, because everyone else gets it wrong.

The music player app for Android is awful. Comedically, hysterically, epically awful. For starters, the user interface is bad, which is a shame because it tries so very, very hard. For example, when you’re playing music and the phone is locked, a little music control panel with the name of the album and track and buttons to control the music will appear on the screen when you unlock the phone.

And then, after a couple of seconds, it will do this nifty-neato-cool 3D flip effect and the buttons will disappear, forcing you to flip the panel back over with another nifty-neato-cool 3D flip effect to make the buttons reappear again. I am not sure WHY the designers chose to show you the buttons for only a few seconds and then take them away, except that they were really nifty and neato and cool and liked showing off the nifty-neato-cool 3D flip effect to their friends. From a user interface perspective, it’s terrible.

As with Sirius Cybernetic Corporation products, the music player’s superficial user interface flaws are largely masked by its huge, gaping design and implementation errors. This is a screen I see nearly every time I use it:

I can make the music player software crash any time I want. All I have to do is tap the button to list all my music by artist, then tap an artist, then tap the name of an album by that artist, then tap the Back button, then tap the button to see all the songs by that artist, and WHAM! Every single time.

This is embarrassingly bad.

Text Messaging

The built-in messaging app isn’t as embarrassingly bad as the music player app, but it’s still not as clean or as well thought-out as the iPhone text messaging app.

For example: When i get a text message, if I go straight to the text messaging app from the lock screen, it takes me to the list of all the people I’ve texted with recently, not to the text message I just received. If I get a text message while the messaging app is running, and I unlock the phone normally rather than unlocking it by sliding to the messaging app, I go straight to the message I’ve just received. If the text messaging app isn’t already running and I get a message, and I unlock the phone normally rather than unlocking it by sliding to the messaging app, again I see the list of everyone I’ve texted with recently, not the message I’ve just received.

Also, if I’m texting with someone, and a message comes in while I’m typing a message myself, the keyboard sometimes disappears. This is highly annoying.

Twitter

I use the official Twitter app on both iOS and Android. On both platforms, it’s a good study in user interface fail, but on Android it crashes less often than it does on iOS, which is good, I guess.

Yes, I know there are other Twitter apps (see HTC Peep in the Crapware section below), but they, too, tend to be studies in user interface fail.

Calculator

I expected the calculator app built into Android to rock. Android is a very geeky operating system, and geeks love their calculators.

Instead, it’s an example of what happens when people who aren’t designers try to do design. The result, which I’m sure was intended to look modern and cool, actually looks like there’s a font error on the number keys.

Like the calculator in iOS, the calculator in Android reveals more functions when you turn it to landscape. Unlike the calculator in iOS, the calculator in Android doesn’t reveal many more functions. Given the fact that my Sensation is a much more powerful computer than my iPhone, it’s somewhat ironic that the calculator is so lame.

That’s Android on the left, and iOS on the right.

Contacts

This one is a clear no-brainer: the contact management on Android is way better than on iOS.

And it gets better still if you sync to the cloud, which I don’t do.

The Android contact manager is tightly integrated with Google’s services; you can manage, pull in, sync, and share contacts between Android and Gmail. You can also store a lot more information in the Android’s contacts than you can in the iPhone contacts. And you can specify where you want a contact to be stored–on the phone, on the SIM card, in the Google cloud, or (with T-Mobile) on the T-Mobile cloud.

I don’t actually import my contacts into Gmail, so I keep everything on the phone. For folks who do keep contact information in the cloud, it’d be an even bigger improvement over the iOS address book.

Voicemail

Apple invented the notion of visual voicemail–voicemail the way that it really ought to be. The other carriers still aren’t fully on board with the idea of visual voicemail; some of them are trying to implement it, others aren’t.

T-Mobile is one of the ones that is. My Sensation shipped with a T-Mobile Visual Voicemail app. I was quite happy about that, and one of the first things I did was run it.

It presented me with a screen telling me that to set up visual voicemail, I should hit the Next button. I hit the Next button. A spinning wheel came up. A text message came in saying I had changed my T-Mobile settings. And then…nothing.

The wheel spun. And spun. For an hour. Nothing happened.

The next day, I decided to try again. I ran the Visual Voicemail app. It presented me with a screen telling me that to set up visual voicemail, I should hit the Next button. I hit the Next button. A spinning wheel came up. A text message came in saying I had changed my T-Mobile settings. And then…nothing. Nothing, that is, unless you count the fact that my ordinary, old-fashioned, dial-in-and-listen voicemail stopped working.

The day after that, I tried again. I ran the Visual Voicemail app. It presented me with a screen telling me that to set up visual voicemail, I should hit the Next button. I hit the Next button. A spinning wheel came up. A text message came in saying I had changed my T-Mobile settings. For a moment, nothing happened. Then, after that, nothing continued to happen.

I played this game several more times over the next few days. Finally, after multiple more attempts, some magic happened out there in the world somewhere…some butterfly in Bangladesh beat its wings in just the right way or something, I don’t know, and it started to work.

It does what it says on the tin, albeit with an interface not as polished as the iPhone’s.

Crapware

There’s a ton of it. And it can’t be removed.

Believe me, I’ve tried. The Android App Manager offers no option to uninstall the pre-bundled apps, no matter how much I might want to. I downloaded a third-party file manager, which shows me an Uninstall button for those apps, but then says “Uninstall Failed” when I try to nuke them. There is at present no way to root this particular phone, so I can’t uninstall the apps that way. I can’t even ssh in and get rid of them.

Some of the apps bundled on my phone are amazing, and I mean that in the worst possible way.

Not all of them totally suck. There’s Slacker Radio, which I gather is a low-rent Pandora or Last.fm. It insists on starting automatically and running in the background whenever I start my phone. I can’t delete it, and I can’t see it in the built-in task manager, but I can see it and stop it in a third-party task manager app.

The bundled social networking apps, on the other hand, are a different story.

Take HTC Peep, for example. It’s a bundled Twitter client that could be used to write a textbook, with copious annotations and a very lengthy appendix or three, on How Not To Write A Smartphone App. If you are unfortunate enough to give it your login information, every fifteen minutes it connects to Twitter and downloads your feed.

All of it.

Even the bits it downloaded fifteen minutes ago.

This creates, as you might expect, a jaw-dropping amount of network traffic. Folks without one of the increasingly rare unlimited data plans who put their login information into Peep might end up with an equally jaw-dropping bill the next month…that is, if they could get their phone to work without running out of juice every half-hour or so.

I finally figured out how to remove my login information from Peep, but I’d dearly love to get rid of the app entirely. Preferably in the nuclear waste disposal site in Yucca Mountain, where it can be safely contained and won’t be a menace to future generations.


PART IV: DEVELOPMENT

Development for smartphones is kind of a bad news/bad news affair.

The bad news is that if you want to develop for iOS, you have to go through a guy who’s basically a sociopath and also a control freak to do it. Apple tightly regulates its app store, and there’s no other game in town. If they don’t like your app, you won’t sell it.

The good news is that if you want to develop for Android, there’s nobody telling you not to. You can do pretty much whatever you want. The bad news attached to that is you can do pretty much whatever you want, and that includes writing malware. Which has happened. The good news about that is that Google can reach out over the air and delete the malware from your phone if you download something nasty; the bad news is they can reach out and delete anything else they want as well.

Apple can, too, of course. We live in an age where it’s difficult for companies that make programmable gizmos to give up control of those gizmos. The worse news is that with Android, Google can also reach out and put stuff on your cell phone as well. I’ve talked about that before, and about how we as a society haven’t really considered the legal and social implications of what that might mean.

We still haven’t, by the way.

If you do decide to go with Apple, you get a very nice software development toolkit to develop with. You can’t actually distribute your app without getting App Store approval or getting a company license that allows you to deploy on your own company’s infrastructure (though you can with a developer account get a provisioning profile that lets you run the app on your own iOS device for debugging), but assuming you’re willing to face the approval process, the developer environment is wonderful.

By contrast, the developer tools for Android put all the ugliness of Linux, all the user unfriendliness of Linux, all the weird clunky techy quirks of Linux, and all the annoyances of Linux in the same place. Simply installing the SDK is an exercise in pain, and I say that as a person who’s built Gentoo installs.

So you get to build whatever you want, using crap tools in a chaotic marketplace with a fragmented operating system and an even more fragmented set of hardware platforms to support, or you get to use a very nice set of tools to develop for a tightly integrated and well-disciplined hardware and software stack provided you’re willing to please a company known for psycho control freakery and somewhat arbitrary values. (Steve Jobs is reputed to have said “Want Porn? Buy an Android!” Yeah, thanks for protecting us from porn, dude who fathered an illegitimate child that you refused to support for many years…)

Developing hardware that interfaces with the phone is the same story only even more polarized. You can develop hardware for Apple, if you’re willing (and can afford) to go through a licensing process, spell out exactly what you’re going to do and how you’re going to do it, convince Apple that there’s a market for your gizmo, and then get them to license the tech to you…or you can develop for Android phones using a number of hardware platforms (like the open-source, open-hardware Arduino or Sparkfun prototyping boards, which you can find for less than $50). Regular readers of this blog will already know what I can do with an Arduino board.

And the hard economic reality is, if your goal is to make a profit, you’re better off on iOS than Android. Even as the Android market surges, studies show that with very few exceptions (primarily with established, popular game developers), most folks are making a lot more money developing for iOS than for Android. iOS device owners simply seem to spend more on apps than Android owners do.

I personally am really looking forward to developing both hardware and software for Android. The kinds of things I want to develop–a port of my desktop sex game Onyx, for instance, or Android-interfaced sex toys–are non-starters in the iOS world, at least in native form. (Anyone can develop Web apps for iOS without Apple’s approval, though they require a Web connection to run and are in many ways significantly more limited than native apps.)


On the whole, I’ve been quite happy with my Android phone, though I will say that the quality of the software is generally lower and the end-to-end user experience isn’t as good as the iPhone. I will probably become an Android developer–you know, in my copious spare time and all, if and when I should ever happen to find some of that.

The Android/iPhone religious wars remind me a great deal of the TRS-80/Commodore 64 religious wars I lived through a long time ago. Essentially, they aren’t about the phones at all. They’re about validation; people who choose one or the other want to believe that they have made the best and most rational choice for the best and most rational reason, and one way to get that validation is to think of everyone who made the other choice as being a dumb and stupid moron who’s an idiot and also dumb and stupid. It doesn’t help, of course, that notions of “openness” and “freedom,” which are a lot more nuanced and more complex than folks make them out to be, inspire such tremendous heat in a vocal part of the population.

In a perfect world, I’d like to see an Android phone with the same level of fanatical, obsessive attention to detail and user interface design that I got with my iPhone, and I’d like to see Apple become a bit less psychotic about controlling its app store. Some elements of that psychosis, like the fact that you’re not going to find malware or apps that crash as often as the Android music player app crashes, are good; others, like Apple’s occasional arbitrariness and its quixotic views on sex, are not.

But like I said, I am on the whole happy with my Android phone. Should I find the time to start developing for it, I will likely find myself happier still.

I wish the music player didn’t keep crashing, though.

6 thoughts on “From iPhone to Android

  1. … Practically everything you dislike about your HTC Sensation works significantly differently on my Samsung Galaxy S (also Android). There are a couple of things I hate, but to give you an example of the good: if a message arrives, an icon appears in the itty bitty taskbar; I then swipe that taskbar down, where it will display links to each program that has new messages in it (email, gmail, sms, im, google+…) and when you click on whichever one you choose, it takes you to the most recent message.

  2. … Practically everything you dislike about your HTC Sensation works significantly differently on my Samsung Galaxy S (also Android). There are a couple of things I hate, but to give you an example of the good: if a message arrives, an icon appears in the itty bitty taskbar; I then swipe that taskbar down, where it will display links to each program that has new messages in it (email, gmail, sms, im, google+…) and when you click on whichever one you choose, it takes you to the most recent message.

  3. I’m surprised that you didnt discuss Swype in the keyboard section. I agree that the iphone onscreen keyboard is much better for typing by single letters, but the swype action on my Android is amazing, and has a lot of iPhone people jealous.

    I have the same coverage issues with TMobile. In NYC, it works great outdoors, just okay indoors. In Washington, DC and Baltimore, MD, the coverage was very spotty.

  4. I’m surprised that you didnt discuss Swype in the keyboard section. I agree that the iphone onscreen keyboard is much better for typing by single letters, but the swype action on my Android is amazing, and has a lot of iPhone people jealous.

    I have the same coverage issues with TMobile. In NYC, it works great outdoors, just okay indoors. In Washington, DC and Baltimore, MD, the coverage was very spotty.

  5. interesting– i’m with you on some of these and not with you on others.

    having recently gotten a t-mobile android sidekick (which seems to be a rather low-end samsung android), i was fascinated by the apparent acceptance, relative to the iphone, of rooting one’s phone. a significant fraction of the apps distributed through the official android market openly require a rooted phone.

    also, i found the android development environment painless to install (on a mac).

    i haven’t seriously investigated the depth of cruft preinstalled or its associated power consumption yet. but my usual hair-tearing gripe is about apps not doing enough work in the background. i’d like to be able to start half a dozen network-related tasks, set the phone down, and come back and look at the results when they’re finished getting their data and rendering it. my attention is an important resource, and apps that insist on having my attention all the time or they won’t do anything make me really, really cranky.

    i feel like the worst offender in this regard is web browsers– as a class, because as far as i can tell they all use android’s “webkit” under the hood, so they share a lot of the same behavior. online forums from a couple of years back are full of complaints about the android browser insisting on re-downloading and re-rendering pages whenever it regained the focus, making it useless for offline reading. a number of those threads end with the note that this issue was “fixed” in froyo, android 2.2 (the version my phone runs). as far as i can find what was fixed was just some categories of re-downloading; you can still have pages re-rendered, they’ll just render from cached html. but rendering is also an expensive and slow operation that i’d prefer to have happen while my attention is elsewhere, thank you… and i’d really rather not have all the text input fields of any page i may have been typing into trashed if i look away and look back again…

    i haven’t yet played with the gps navigation at all; reading your comments makes me want to go fiddle with it. 🙂

  6. interesting– i’m with you on some of these and not with you on others.

    having recently gotten a t-mobile android sidekick (which seems to be a rather low-end samsung android), i was fascinated by the apparent acceptance, relative to the iphone, of rooting one’s phone. a significant fraction of the apps distributed through the official android market openly require a rooted phone.

    also, i found the android development environment painless to install (on a mac).

    i haven’t seriously investigated the depth of cruft preinstalled or its associated power consumption yet. but my usual hair-tearing gripe is about apps not doing enough work in the background. i’d like to be able to start half a dozen network-related tasks, set the phone down, and come back and look at the results when they’re finished getting their data and rendering it. my attention is an important resource, and apps that insist on having my attention all the time or they won’t do anything make me really, really cranky.

    i feel like the worst offender in this regard is web browsers– as a class, because as far as i can tell they all use android’s “webkit” under the hood, so they share a lot of the same behavior. online forums from a couple of years back are full of complaints about the android browser insisting on re-downloading and re-rendering pages whenever it regained the focus, making it useless for offline reading. a number of those threads end with the note that this issue was “fixed” in froyo, android 2.2 (the version my phone runs). as far as i can find what was fixed was just some categories of re-downloading; you can still have pages re-rendered, they’ll just render from cached html. but rendering is also an expensive and slow operation that i’d prefer to have happen while my attention is elsewhere, thank you… and i’d really rather not have all the text input fields of any page i may have been typing into trashed if i look away and look back again…

    i haven’t yet played with the gps navigation at all; reading your comments makes me want to go fiddle with it. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.