Free your voicemail
We felt that voicemail shouldn’t be something owned by telephone carriers. It doesn’t seem right that you should pay to be able to phone someone else and sit through an annoying voice menu just to know what people have said to you. So we built voicemail for your android phone.
You’re able to set a delay before the phone picks up, and a maximum message length. Your phone will then automatically answer, play a short welcome message, and record what the caller says - then hang up. The calls are recorded in .3gp format in a folder labeled Voicemail that sits in your /sdcard/ folder. AnarchyMail lets you browse this folder and playback messages (stored with the time/day they were left as IDs) through its interface - no filebrowser required, but you’re not blocked from using one.
- Android 2.0-2.2 only; this doesn’t work below 2.0 and google blocks it in 2.3
- Background noise is recorded and audible to the caller - we aren’t able to turn off your microphone during a call. Believe me when I say we tried, hard. If you can get this to happen, we’d be very happy :)
- We hang up the phone by flipping airplane mode on and then off again. There’s no API hooks to do this, so we had to kludge it. It’s pretty smooth and fast, but it’s heavy handed.
- No facility to record your own personal message through the AnarchyMail interface. (yet!)
- No facility to delete Voicemail messages through the AnarchyMail interface. (yet!)
- Message length displays don’t appear to be working; we can’t figure out why and are working on this.
- No facility to stop/pause/skip around in messages through the AnarchyMail interface - again, we want this so it will happen eventually.
- No facility to identify callers - this didn’t seem important to us, but we would like to add it anyway. Might end up being really hard.
With that long list of caveats, the application is operable - you’d just have to drop in your own /Voicemail/a.message/audiofile.3gp message, and it will work fine. It’s easily enable-able and disable-able through the interface, just a checkbox.
Get it here.
Day 5 retrospective
The game from Day 4 wasn’t finished, and the people who were most involved wanted to keep working on that. So the rest of us had to figure out what the new day’s app would be.
Given that we earned a bit of proficiency with Android from the day before, we decided to tackle another problem on that platform. We had an idea for free local voicemail, and we immediately went searching for existing solutions on the Market. We couldn’t find any, but we did find individual components, so we decided that it was feasible enough to pursue.
We found this open-source app available on the Market. It automatically answers phone calls on behalf of the user, and so we thought it would be the perfect place to build on top of. The code can be found here: http://code.google.com/p/auto-answer/
The minimal viable product was defined to have the following functionality:
- answering and closing calls automatically
- recording the call stream
- saving the recording locally on the phone
The bulk of the day was spent making the existing project play nicely with Eclipse. Once that was done, work began on implementing the rest of the features.
Recording wrapped up really easily, and storing the files was also implemented quickly. All our issues came from handling the call stream. There’s nothing in the Android API available to end a phone call; odd because we were able to answer in the first place. We wrote code to toggle airplane mode on and off as a workaround to end a call.
So where is it?
We’ve achieved all of the features we wanted to when we set out. That said, there are limitations to the app, and we wanted to work on those before releasing it.
- In order to play a recorded greeting to the caller, the speakerphone will turn on and then play the recording. We have been unable to find a way to play audio on top of the phone stream.
- During a call, the phone’s mic will be on. This means that the caller will hear background noise, which may be undesirable.
- Currently, the code is only functional for Android 2.1 and 2.2. From 2.3 onwards, there’s no way to access the phone stream, effectively crippling this app.
We’re still happy with the result of the day’s work. We’re just making things a tad prettier and we’ll release it soon. The code is available on github [here].Fri, 11 Mar 2011 23:32:00
Day 5 in picsWed, 09 Mar 2011 17:37:15