7

我正在尝试使用诸如项目之类的Sip client为 android构建一个。不过,其实我对. 有没有人有关于 pjsip 的教程或类似的东西来使用 PJsip lib 在 android 中构建一个?欢迎任何建议!pjsipCSipSimplepjsipSip softphone

4

5 回答 5

3

您不必使用第三方库在 Android 中构建 SIP 客户端功能。Android 包含一个成熟的SIP API。您可以查看SIP 演示以了解如何将 SIP API 用于步话机类型的实现。

于 2012-05-10T09:45:28.537 回答
3

我不会推荐 Android 默认 sip 堆栈来构建软件电话。我犯了同样的错误并且有很多问题。我在使用 android 默认 sip 堆栈时遇到的一些缺点

  1. 它不支持 Dtmf 音

    • 它不支持视频通话
  2. - 它支持相当有限的安卓版本,它不会支持旧版本的安卓,特别是那些廉价平板电脑上可用的非标准安卓版本。

所以在浪费了大约一个月之后,我再次使用 pjsip 开发了整个应用程序。它不像 android sip stack 那样简单,但值得它的功能

于 2020-12-28T20:22:55.567 回答
2

接受的答案并不完全准确。Android SIP API 中缺少许多理想的功能,您可能希望通过 3rd-party 库来实现这些功能。

关于前面提到的 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

那是在遵循正确的 Android 说明之后,将 OpenSSL 压缩包解压到 pjsip 上方的文件夹../3rd-party/中并首先在那里构建。我在上一篇文章中详细描述了该过程。

于 2016-05-16T18:52:16.067 回答
0

我不会使用 Android 内置 Sipstack Api 作为第一选择。它缺乏很多基本的调用功能,并且不支持很多 Android 设备。我宁愿建议将 PJSip 用于生产。

于 2019-11-22T08:05:43.623 回答
-1

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

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

于 2016-07-13T05:30:48.090 回答