某些设备不支持SipApi

时间:2013-12-14 10:57:37

标签: android sip sipdroid

我使用原生sip apis在Android应用程序中实现sip调用它工作正常,但在某些设备如CANVAS 3中它无效。调试后我发现这行代码返回 NULL

 **manager = SipManager.newInstance(ctx);**

那个设备不支持Sip Apis.But在同一设备上其他sipDroid等sipcalling应用程序正常工作。如何可能?他们是不是使用原生sip Apis ???

2 个答案:

答案 0 :(得分:5)

您可以使用自定义SipLibraries。

适用于Android的第三方开源sip堆栈库

  1. Jain sip:http://jsip.java.net/
  2. Pjsip:http://www.pjsip.org/
  3. Mjsip:http://mjsip.org/mjua.html
  4. Doubango:http://www.doubango.org/
  5. 有不同的开源项目在他们的项目中使用了这些库。

    1. Jain sip:未在“着名”应用程序中使用。
    2. Sipdroid使用MjSip
    3. Csipsimple使用PjSip
    4. Imsdroid使用doubango。
    5. 开源SIP堆栈:Android SDK的默认实现(API> 9) 优点:可用文档。容易明白。 缺点:由于运营商限制,并非所有设备都受支持。仅适用于WiFi。无法更改编解码器。

      第三方:JainSIP 优点:Oracle(Sun)项目==>积极发展。看起来比MjSIP更容易(更多文档)。 缺点:没有 Android 2.3 using external JAIN-SIP(J-SIP) Stack | Classpath

      第三方:MjSIP 优点:SipDroid是建立在它上面的。 (源代码可用)(red5phone是另一个项目) 缺点:不完全符合RFC?缺乏教程(虽然可以使用Javadoc)。开发几乎已经死了

      第三方:Doubango框架 优点:IMSDroid就是基于它构建的。 (可用源代码) 缺点:生成的apk文件大小往往是“重”(这里提到的大于15MB)

      关注from

答案 1 :(得分:4)

为了补充SilentKiller的回复,我会将我的回答转发给this问题,但是请记住,选择堆栈是一项非常复杂的任务,取决于您的目标和偏好。


Android SIP Stack在旧JAIN SIP版本上加上一些扩展(IMS,支持RTP等)。这个堆栈的主要问题是,在大多数设备中,它只能通过WiFi工作,没有3G或LTE(注意android.net.sip.SipManager包含方法isSipWifiOnly以了解是否启用了此限制)。

另一方面,pjsip非常完整,就像他们说的那样,它不是SIP堆栈,而是完整的多媒体通信库。它真的很多功能:您可以使用大量配置或只将其作为simple user agent运行。它适用于任何类型的数据连接(不限于WiFi)。

现在比较:在我看来,pjsip更完整,更通用,但更难以与您的项目集成(使用Android SIP Stack一切都保留在SDK环境中,而pjsip,你需要使用NDK和JNI库。

我的观点:如果您计划创建一个非常简单的SIP应用程序并且您不介意WiFi限制,我认为,最好的是使用本机SIP API,但是,如果您计划改进它并做更多事情“有趣的“,我强烈推荐pjsip。我已经使用了JAIN SIP和pjsip,而且我的投票又是psip。但这只是我的意见。


还有另一个值得检查的第三方堆栈:Linphone。它也通过JNI(如pjsip)集成到您的项目中,并且也非常完整,但可能更复杂和沉重。

希望这会有所帮助。