If you have an android phone like myself, and are looking for a way to connect it to your car computer through some wireless technology to get notified of incoming calls while you are driving you might have been thinking Bluetooth. If you wanted to answer the calls with your computer and talk through the computer with a hands free type setup, you are on the right track and will need to look into the HFP (Hands Free Profile) Bluetooth Profile.
But this article is not about getting incoming call notifications through Bluetooth. I have tried setting up Bluetooth with my carputer setup, and changing Bluetooth stacks, adapters, code, programs and all that, nothing seemed to work how I wanted it to. No programs available would work by just giving me caller information on the screen, that I could program with an available SDK or match my custom interface with some skinning.
Please note that I am not at all interested in routing the call through the computer. I just want to see when somebody is calling, and get notified when an SMS message arrives. A plus would be able to click buttons in my custom interface to call people without typing names or numbers on the phone. Just click, and phone dials.
Looking through the Android Market, there is an application called ‘android-notifier’. This allows you to connect your phone to a wireless network (or Bluetooth network, but we are not going to do anything Bluetooth at the moment) and have the phone send UDP packets to a specific host on the wireless network when events happen on the phone. These events include incoming calls, sms messages, mms messages, battery level, and new voicemail. Perfect.
Now we need to have the phone able to connect to the carputer. Not to hard to think of this one. We need to use an Ad-Hoc network between the phone and the computer. Err, okay no the Android OS (as of this article) cannot connect to an Ad-Hoc network. Shit. Alright we need to have an Access Point of some kind. This is where you can do your own thing, two come to mind. First if we have a compatible wireless adapter in our carputer we can emulate an access point and have the phone connect to it. The software to do this is no longer developed though, but some USB or PCI wireless cards might come with their own SoftAP (Software Access Point).
You will have to do some searching to find which cards SoftAP supported and give it a shot, it’s up to you. I am posting a version I found a while back, not sure if it will work for you, if so great, if not read on.
If a SoftAP does not work for you, or you don’t want to use a wireless adapter in your carputer setup, you can always find a low power physical access point. Yes, a full featured AP and run it off the power supply in your carputer. You will need to make sure it runs off of 12v or 5v and that it only pulls a few amps, preferably 2A max draw. I used an Proxim AP-700, which I had lying around, it’s probably not one you want to just buy out-right. They are not the cheapest. Do some searching, find one in your price range.
We can then run Ethernet from the carputer’s Ethernet port directly to the access point, and give both the computer and the AP a static IP address. Configure the AP to be a DHCP server so your phone (Android again at the moment does not support different IP schemes per wireless network) is dynamic. You may want to assign the MAC of the phone in the AP to always get the same IP. Now that your phone is on the same network as the carputer, you can catch those UDP packets sent from the ‘android-notifier’ application, and have the information shown on the screen.
I am not going to get into the code needed to show the information, I made a small Windows application in VB6 with source code available to show how to open a UDP port on the computer and have it just wait for data, very simple.