I've started learning how to do Android development - I'll probably write some sort of BugTracker.NET app in the future - and so I bought a Nexus One. I have a free smartphone from work, so there was no reason for me to actually shell out the money for a T-Mobile contract, so I just got the device itself, about $560 with tax. So, without the phone service, I basically shelled out $560 for a fancy iPod Touch.
And then....I got jealous of grown-ups and their REAL phones that actually work, so I tried to see if I could make real calls too, just like mommy and daddy, just using the internet. It turns out you can make calls to regular phones and receive them, if you just follow this simple 37-and-a-half step process below. It took me about 3 hours to get it right, but when I did, I was very nerdily excited. So much so, that I had to call other family members. Even though, we all live in the same house. Somehow, they didn't share my excitement that I was able to call our home's landline from the bathroom, using just my N1 over WIFI. And I can receive calls too. There's a mere 2 second delay for my voice to be disassembled into electrons and reassembled. Just enough of a delay to make conversation really unpleasant for everybody. Oh, and there's a sort of Jimi Hendrix effect happening with to the voices too. But who cares, it's cool, it's challenging, and it's free.
I used http://forum.xda-developers.com/showthread.php?t=548405 as my guide, but the process is confusing enough that you might want a second guide and then you can triangulate and maybe figure out what to really do.
Here are the steps.
1) Sign up for Google Voice. If you buy the phone, you'll get an invite.
2) Get a free SIP account here: https://secure.dns-hosting.info/register_sip_account.phtml
You'll end up with a SIP phone number, something like this: firstname.lastname@example.org.
You'll need your password again for step 4.
3) Get a free IPKall phone number here: http://phone.ipkall.com/
You'll be asked for your SIP info. Enter it like this:
SIP Phone Number: 2223334444
SIP Proxy: sip2sip.info
Remember your IPKall number, because you'll need it for step 6.
4) Get a free PBX account at https://www4.pbxes.com/index_e.php. My pbx username is "ctrager", which I'll be using for step 5.
a) Add an extension - use "100" for the extension and remember the password.
b Add a trunk. You'll use your SIP info again.
c) Add an inbound route
d) Add an outbound route
The screenshots below show you how to do the configuration. I don't know what anything means. If by chance I've screwed up with these screenshots, see the guide that I followed:
There are also screenshots at http://forum.xda-developers.com/showthread.php?t=548405
Add an extension. Make a password and remember it.
Enter your sip2sip number/password/server below.
5) On your phone, download sipdroid. Go to "Settings", "SIP Account Settings" and enter the following:
Authorization Username: ctrager-100 <-- this is your pbx username and your pbx extension
Password: Your pbx extension password.
6) You should now be able to receive incoming calls to your IPKall number. Add it as one of your phones on Google Voice. If all goes well, your Android device will ring, like a real phone. But, me, I had trouble getting Google to accept the confirmation number I was typing. I tried using this too, holding the phone up to the computer speaker: http://www.dsptutor.freeuk.com/dtmf/ToneGenerator.html. I can't remember which worked, the tone generator applet or my phone itself, but after several tries it worked.
You're done. So, now, if somebody calls your Google Voice number, it will ring your IPKall number, and then your SIP account, and I think then to your PBX account, and then via sipdroid, your phone will ring. To make an outgoing call, use the Android browser to go to Google Voice, call the number from the web page, and Google Voice will first call you back to make the connection.