android中的PJSip

android中的PJSip,android,pjsip,Android,Pjsip,我正在尝试使用pjsip为android构建一个Sip客户端,比如project。然而,我实际上对pjsip知之甚少。有没有人有关于pjsip的教程或者类似的东西来使用pjsip库在android中构建Sip softphone? 欢迎任何建议 您可以从该网站获得帮助 您不必使用第三方库在Android中构建SIP客户端功能。Android包括一个成熟的应用程序。您可以通过查看了解如何将SIP API用于对讲机类型的实现。公认的答案并不完全准确。您可能希望通过第三方库实现Android SI

我正在尝试使用
pjsip
为android构建一个
Sip客户端
,比如project。然而,我实际上对
pjsip
知之甚少。有没有人有关于pjsip的教程或者类似的东西来使用pjsip库在android中构建
Sip softphone

欢迎任何建议

您可以从该网站获得帮助


您不必使用第三方库在Android中构建SIP客户端功能。Android包括一个成熟的应用程序。您可以通过查看了解如何将SIP API用于对讲机类型的实现。

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

关于前面提到的pjsip,我已经花了大量时间试验了Android构建的pjsip,而且,要获得可靠的即时注册,唯一的方法就是构建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

之后,将OpenSSL tarball导出到pjsip
。/3rd party/
上方的文件夹中,并在那里进行第一次构建。我在一篇文章中详细描述了这个过程。

如果您只想开发sip客户端,那么您可以使用android的sip API,但正如上面的回答所述,它将限制您的应用程序功能。 但如果你想在你的应用程序中开发聊天或通话功能,那么你可以使用pjsip,它提供了很多丰富的功能。 至于为android构建pjsip,您可以从中学习,对于ios,您可以从中学习。 基本上,pjsip为您提供了许多具有丰富功能的API,您可以根据自己的需求使用这些API,如pjlib、pjsip、PJ media、pjsua等。pjsua(或android的pjsua2)是更高级别的API,可以帮助您以最小的复杂性提取最大的输出。您可以直接从中了解pjsua。他们还提供了一个演示应用程序及其源代码,这将帮助您了解使用pjsip构建的具有聊天和调用功能的应用程序的基本结构


对于Android,您可以在上看到一个演示应用程序。

我不会首先使用Android buildin Sipstack Api。它缺乏许多基本的调用功能,并且在许多Android设备上不支持。 我宁愿建议生产PJSip

我不会推荐Android默认sip堆栈来构建软电话。我也犯了同样的错误,有很多问题。我在使用android默认sip堆栈时遇到的一些缺点
  • 它不支持Dtmf音

    • 它不支持视频通话
  • -它支持相当有限的android版本,并且不会支持较旧版本的android,特别是那些非标准版本 这些便宜的平板电脑上有android版本


  • 因此,在浪费了大约一个月的时间后,我再次使用pjsip开发了整个应用程序。这并不像android sip stack那么简单,但值得一提的是它的功能

    注意,这将把你的应用程序限制在android 2.3版或更高版本,但我猜这大约是75%的用户基础根据上的Play Store统计,你的猜测是对的(就在发表评论的那天),这也将你的应用程序限制在wi-fi上,这是没有用的。。。。除了apjsua,你还知道其他使用pjsip的方法吗?因为apjsua不起作用,我花了好几天时间在它上面……我听到了很多关于它的好评论。您可以查看一下。我已经成功构建了CSipSimple,但是更改UI并使其按照您的要求工作是非常具有挑战性的,而且在使用他们的代码时可能存在一些法律问题。这就是为什么我想要一个基本的演示,比如pjsip提供的apjsua,但它在注册时给了我错误。如果你在pjsip上工作过,那对我会有很大的帮助。有辅导吗。遗憾的是,我不能使用本机SIPAPI。从哪里开始有什么建议吗?