16
votes

I am trying to implement a scenario whereby App-User A can make a voice (video not so important now) call to App-User B on Android. It seems difficult to come across a good tutorial that covers the whole picture. However, from my research, I have been able to learn couple of things but still not enough to get it done.

From what I learnt so far, to implement App-to-App calling, one can either user SIP or WebRTC. PJSIP seems to be fairly popular. After much effort, I was able to build the pjsip project and also run the sample pjsua2 app on my android device but got stuck in Account Settings section of the sample app as I don't know how to come about the credentials it's requesting for (ID, Registrar, Proxy, Username and Password). Also, I can't seem to get a decent tutorial on learning how to use the pjsip libraries.

I also spent some time looking into WebRTC, which kind of looks simpler than pjsip using jingle, but where I got stuck is getting useful resource or tutorials on how to setup a signalling server and some other required stuffs like STUN, TURN, etc.

Though, I am still battling in thoughts with which (PJSIP or WebRTC using Jingle) will deliver the best experience in terms of voice/sound quality and bandwidth friendliness, but at least I just want to get one up and running without issues.

During my search, I came across Sinch API, which does exactly what I want, but for some reasons, we have been told not to use it.

I will very much appreciate a point in the right direction and links to learning resources as well.

1
The Sinch SDK is a product that makes adding voice calling and/or instant messaging to mobile apps easy. It handles all the complexity of signaling and audio management while providing you the freedom to create a stunning user interface.sinch.com/docs/voice/androidMuhammad Waleed
@ExceptionLover Sinch SDK is cool but not free. With the expected usage of the app, it would be impractical to use Sinch SDK as the cost would be too high to maintain. If that wasn't the case, Sinch SDK would have just solved my problem.Mark Sherman
@Mark You can try the Restcomm SDKs: Android (github.com/RestComm/restcomm-android-sdk), iOS (github.com/RestComm/restcomm-ios-sdk), Web (github.com/RestComm/restcomm-web-sdk). They are WebRTC based and use SIP under covers for signalling. They are fully open source under an AGPL license. You would be welcome to contribute too !jeand
@MarkSherman. Facing exactly the same. Could you please share the direction you choose.Santosh Joshi

1 Answers

1
votes

You can use asterisk server framework like PIAF(pbx in a flash) a very nice collection of very stable product as a SIP server. For client like android, iOS etc you can use pjsip library. csipsimple is one of the best android opensource UI.

Free/Open Source Projects using PJSIP

For PIAF further reading can be found here: Getting Started with PBX in a Flash