I haven't found a clear guide on adding G729 into Sipdroid, so here I post my recent experience here.
I already had Android development system on my Windows computer, so I won't cover that here. If you have never built an Android app with Eclipse yet, you can find the guide on the Internet. This article is not about building an app in general, only about adding G729 to Sipdroid.
- Download Sipdroid source code (r624 2.7 beta): http://code.google.com/p/sipdroid/source/checkout
- Create or copy a project.properties file from any your other Android source. It is a very simple file, only one line: target=android-17
- Right click on the SipUA project, select Android Tools, Add Support Libraries...
- Download the G729.java from here and add it into the project. Change CODEC_DEFAULT_SETTING = "never"; to ......"always";
- Add "add(new G729());" after BV16() in Codecs.java, so G729 will appear as one of the codecs under the Codecs menu.
- Download the libs.rar and uncompress it into the libs folder.
If you can't do above, here is an apk file you can download: V2.4. The V2.7 does not work, you need to compile it yourself with r624 source code. V2.8 and newer versions are messed up after the developers added too much useless features.
[Note] Sipdroid has three big bugs that prevent it from being usable. Unless you think you can fix these bugs, don't waste your time trying to compile its source code.
1) Lost SIP registration and thus no more calls coming in after a while. It still appears to be registered, but actually not.
2) A call is always automatically picked up, even though it is still ringing and the other side can hear you.
3) Unreliable while switching networks, e.g., between WiFi and mobile data.
I have fixed all these bugs.