One of our latest projects at work is on Android, the mobile OS powered by Google. However, as my last post probably pointed out, I’m a pretty avid iPhone user but that also meant I’d never dabbled with Android before. I don’t really designing software for unfamiliar uses, so I asked around to find an Android phone I could borrow for a while. Fortunately, our IT group had one already activated with 3G service on Sprint that I could have for a few months.

Goal: Submerge myself in Android; Live as an Android User

To really get enveloped in how the software and applications behave on the platform, I wanted to live as just an Android user for a few months. That’s the best way I find I learn deeply about a piece of technology. But I really, really did not want to carry two phones around (my iPhone and my Android phone). Since everyone already had my iPhone number, and not my new Android/Sprint number, I’d have to carry both unless I could find a solution.

Failure #1: Forward everything from my AT&T iPhone to my Android phone for a few months

Turns out you just can’t do it right now. I googled long and hard to find any hint of a solution that might work. We’re talking I was looking at answers on pages 33, 34 and beyond in the Google results.

You can:

  • Setup your AT&T service and iPhone to forward all your phone calls to another number

You cannot:

  • Setup your AT&T service and iPhone to forward all your text messages to another number.

Nope, really, really you can’t. No matter what GSM codes you punch in, AT&T doesn’t support them. I went through every SMS-related app available in Cydia for jailbroken iPhones thinking for sure someone has solved this already. Nope. Really, nada zip zero.

I’m not totally clear on all the details, but I now understand it: iOS 4 (the software that iPhone runs today) does not allow realtime application access to the text message database. Without an API from Apple or a hack to access the messaging database file directly, it isn’t possible to write an application to do what I wanted.

So, that was the end of that plan. Living with two phones was my only solution.

New Goal: Make Calls from the Android phone via Google Voice

I already have three or four different phones numbers that I can be reached on: home phone (Vonage), work, my iPhone and a Google Voice number. (BTW, if you haven’t tried out Google Voice, it’s pretty impressive for what it does. I love that I can text and reply to texts from an application on my Mac instead of on the iPhone’s little touchscreen keys.) Giving everyone yet another number to reach me on the Android phone seemed pointless, especially if I’m only going to use it for a couple months. So I figured I’d just setup Google Voice to forward everything to that phone and I’d figure out how to make calls from Google Voice on it. That way when I called someone from the Android phone, at least they’d know it’s me calling.

Failure #2: Unable to Figure Out Making GV Calls on Android

I’ll make this short: if this was possible, it was more effort than worth it. Initially my Android phone didn’t have cell phone service, just wi-fi. So I was trying to find a solution where I could use Google Voice powered apps on wi-fi to survive.

Solutions I tried or checked out:

  • Google Voice app: it doesn’t directly make calls, it calls your Android phone number and then calls the person you’re trying to reach. I was worried this would still show the wrong numbers to other callers. It would allow me to send text messages to others, but only if I was running the application, not from the native SMS client. Still it was close.
  • Sipdroid: had some of the features I was looking for, but nearly impossible to get configured. You have to go create an account on http://www.sipgate.com/, then get the right parameters set and more. Maybe it’d have worked, but I gave up.
  • Voice Plus: had some of the features, but text messages still wouldn’t really work like I wanted.

None of these really had the full set of integration I wanted.
Since then, there’s one that’s been released that might actually have done the trick: GrooVe IP.  It seems like it might meet some of my requirements, but I never tried it out.

Success #1: Google Voice integrates with Sprint

After all that mucking about, our IT group was able to upgrade my Android phone to include Sprint 3G service (not just wi-fi), so I could test our app on 3G speeds more like our customers ultimately will. (Thanks IT!)

Even better news was Google and Sprint announcing direct integration of GV on Sprint phones. I had thought this was just going to be the same sort of Google Voice apps on the phone, but it was actually was much more slick.

GoogeVoiceSprintFeatures.png

Two benefits for what I was trying to do:

  • If you link your Google voice number to your Sprint phone, all calls and text messages that you send from the phone will appear to the recipient as your Google Voice number.
  • All messages and calls to your Google Voice number can be auto-forwarded to your Sprint phone.

Great! While this wouldn’t allow me to live with just one phone for months, it did mean I could mostly survive on the Android. I’d just have to check text messages on my iPhone occasionally.

This was super easy to setup and worked pretty much as advertised. (MMS messages still show your Sprint phone #, but I don’t really use MMS that much.) If you’re a Google Voice user already and getting a Sprint phone, I’d definitely consider using this.


Months Fly by Living on Android

For the next couple months, I used the Android phone as often as possible and really lived with it. What I have to say about Android is this: it’s pretty damn good. iPhone vs. Android really is Mac vs. Windows all over again, but this time with Google playing the Microsoft role.

  • iPhone is simple to use with a nice clean user interface and an App Store with more choices than you really need, but you can only have one exact phone hardware design.
  • Android is a little more clunky in the user experience, but you can pretty much do anything you’d want. And with HTC, Motorola and everyone else making Android phones now, you can get any hardware style you want on pretty much any carrier you want. Android’s notifications and their home screen widgets are great features iPhone doesn’t have yet. (I think they’re both rumored for iOS 5 this fall though.)

If you don’t know Android really, here’s an example of a themed version of the home screen showing weather and time widgets:

ahome-mac-os-x-theme.jpg

(Picture courtesy Android Tapp)

There are widgets for showing your Facebook or Twitter feed, news headlines, etc etc. It’s pretty handy, but does make me wonder how much slower it makes the phone or if it sucks the battery refreshing all that network information.


OK, Time to Give the Android Phone Back to Work…

Our dev team could use another phone with 3G service to do some final network speed & latency testing on our app, so it was time to part with the Android. All I should need to do is 2 easy steps:

  1. Disable the Google Voice / Sprint integration in Google Voice settings.
  2. Factory reset the phone

Well, of course, it didn’t quite end up being that straightforward.

Failure #3: Sprint and GV Easy Setup, But Not Easy to Remove

When I logged into Google Voice, I could see the Sprint phone in the settings (click Voice Settings -> Phones). Here’s what it showed:
SprintPhoneInGV.png

So I clicked Disable. I got a confirmation dialog, said yes and I’m sure and…. doh:

UnableToDisable.png

Fail.

Side note for any Google Voice PM manages to stumble across this post, 4 user-experience suggestions:
1. If you’re going to tell me to contact Sprint, give me some way to do that, either a website link or phone number would do.
2. Why tease me with a “Yes, disable this phone” button? If I press it, all I get is the same frustration error to call Sprint.
3. The help link takes to me a page about activating Google Voice for my Sprint number, not deactivating. Contextual help like this should be more accurate than that. Go to
this page instead.
4. Check your grammar when you write messages even for errors. (“cannot be disable”)

Google’s help page on the topic (once I finally found it) wasn’t very helpful. All it described was the steps I just took above. There are lots of Google Voice forums posts on the topic at http://www.google.com/support/voice/bin/search.py?query=disable+google+voice+sprint+more:help_center&forum=1, but none seemed to really give steps to fix the problem.

So off to Sprint I went. Most of Sprint’s website forces you to log into your account before you can do anything, but since it’s IT’s phone, I don’t know the account info. After some digging, I finally found the Sprint phone number directory at http://www.sprint.com/contactus/?ECID=vanity:contact. In the US, call 888-211-4727. Make make sure to do it from a phone other than your Android as they’ll need to change settings and call the Android phone while you’re talking to them.

Success #2: Sprint Disconnects GV Integration on their Side.

The Sprint service rep knew exactly what I was trying to do and how to fix it. I was literally on the phone for less than 5 minutes and he had the integration disabled. Making calls or sending texts from the Android now show the IT phone number that the phone came with again. Success!  Kudos to Sprint tech support; I’m not sure I’ve had such a service call that solved my problem so quickly and easily.

Well, mostly solved…I logged back into Google Voice and checked it’s settings. It still shows:

SprintPhoneInGV.png

So Sprint did their part, but Google Voice doesn’t apparently know that Sprint has already disconnected it.

I have no idea how long it will take for their two systems to get back in sync with on other. Clicking Disable just repeats the same “Google Voice cannot be disable the Sprint integration on this phone.” Rather than wait or risk that my GV calls still get send to that phone, I manually disabled all the available settings for that phone in Google Voice’s settings like this:

SetAllToDisable.png

Disabling all those features should prevent any texts or calls getting forwarded to that phone anymore. Or so I hope.

I suppose I could try deleting the phone completely from my list of Phones in Google Voice, but I’m afraid that might break things further. So for now, I can live with it there, but inactive.

Done: Reset the phone and it’s ready to hand off.

After that, I just had to factory reset the Android phone. Just a couple clicks in the Settings control panel and all my personal data was wiped clean. It’s all set to hand off either back to IT or hopefully to our dev team in San Francisco.

Was it really worth all that headache?

Believe it or not, I think this was all absolutely worth it. I was able to learn a new mobile OS platform (I’m a phone junkie if you couldn’t tell), learned more about Google Voice’s do’s and don’ts, and got to test our app as planned. I even managed to give some decent user feedback to the app team. I’m still more interested in the upcoming iOS5 than switching to an Android phone, but I’m definitely open to Android in the future. It’s got some promise and is a much, much powerful and easy to use experience than I had expected.

As with my previous post about iPhone jailbreaking, I wrote this up in the hope that someone also frustrated trying to decouple Sprint and Google Voice can save the time I spent. Short answer: Call Sprint — that’s really the only way to get it fixed right now.

Once Google and Sprint have really fixed this problem so that the Disable link actually works, I’d love to know that so I can post an update. Of course, also let me know if I something I describe didn’t work out for you or if it did!