2012-05-10 44 views
6

我正试图建立一个Sip client为Android使用pjsipCSipSimple项目。但是,我其实不太了解pjsip。有没有人有关于pjsip的教程或类似的东西在Android中使用PJsip lib构建Sip softphone? 欢迎任何建议!PJSip在Android上

+1

是否有外用药。可悲的是我不能使用本地SIP API。任何建议从哪里开始? –

回答

3

您不必使用第三方库在Android中建立SIP客户端功能。 Android包含完整的SIP API。您可以查看SIP demo以了解如何将SIP API用于对讲机类型的实施。

+1

请注意,这会限制您的应用程序到Android 2.3 [(API Level 9)](http://developer.android.com/guide/appendix/api-levels.html#level9)及更高版本,但我想这是类似于用户群的75% – Paaske

+0

根据Play Store关于[平台版本]的统计数据(http://developer.android.com/resources/dashboard/platform-versions.html),您的猜测是正确的(就像当天 – Rajesh

+1

这也限制你的应用程序只用于Wi-Fi,这是不是有用的....你知道任何其他方式使用pjsip,除了apjsua,因为apjsua不工作,我花了几天的时间... ... - .. –

1

接受的答案并不完全准确。您可能希望通过第三方库实现Android API所缺少的许多理想功能。

就上述pjsip而言,我花了大量时间试验pjsip的Android版本,如实记录得到可靠的即时注册的唯一方法是构建OpenSSL 1.0.2a并在配置时传递它。然后在Java中,您需要尝试(并失败)启用TLS通信,就像您看到它们针对UDP和TCP所做的那样。这里是我的意思是:

/* Create transports. */ 
    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TLS, transportConfig)); } 
    catch (Throwable t2) { SipManager.log().e(t2); } 

    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_UDP, transportConfig)); } 
    catch (Throwable t) { SipManager.log().e(t); } 

    try { transports.add(ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TCP, transportConfig)); } 
    catch (Throwable t) { SipManager.log().e(t); } 

替换为自己的应用程序的SipManager.log()电话。

我不完全确定为什么,但这对我是必要的。否则,注册过程是半确定性的,意思是它会在失败几次后失败,或者失败5分钟后突然成功等等。在第一次注册后似乎会感到困惑。

这是我如何配置:

TARGET_ABI=arm64-v8a ./configure-android --use-ndk-cflags --with-ssl=`pwd`/../3rd-party/openssl-1.0.2a 

这是继proper Android instructions,exrtacting OpenSSL的包到一个文件夹上面PJSIP ../3rd-party/和第一个建筑之后出现。我在previous post中详细描述了这个过程。

-1

如果您只想开发sip客户端,那么您可以使用android的sip API,但正如上面提到的答案中所述,它会限制您的应用程序功能。 但是,如果您想在应用程序中开发聊天或通话功能,则可以使用提供许多丰富功能的pjsip。 至于建设android的pjsip,你可以从here(android)和ios学习,从here(ios)学习。 基本上,pjsip为您提供了丰富的功能,您可以根据您的需求使用许多API,例如pjlib,pjsip,PJ media,pjsua等。pjsua(或android的pjsua2)是更高级别的API,可帮助您以最少的您可以直接看到here.,您可以从here了解pjsua。他们还提供了一个演示应用程序(pjsua CLI),Pjsua CLI及其来源,它将帮助您了解应用程序的基本结构,以使用具有聊天和调用功能的pjsip构建。

对于Android,您可以在github处看到演示应用程序。