android - 向 Android 项目添加 libjitsi 依赖是否可行?

标签 android voip rtp

我实际上正在开发一个 Android VOIP 应用程序,它允许用户与其他用户创建 session 。我的限制是避免使用像 SIP 服务器这样的服务器来实现它,如果我必须使用外部库,它应该在 LGPL 许可下。我已经使用 AudioGroup 以点对点的方式成功完成了它和 AudioStream android RTP 堆栈的类。

我的问题出现在 3 人 session 中。使用 AudioGroup,我启用了 MODE_ECHO_SUPPRESSION,但效果很差,3 秒后我就能听到回声。我得出结论,Android RTP 堆栈不是解决我的问题的好方法,因为使用 AudioGroup 无法调整声音,回声抑制似乎功能不佳。

通过测试 VOIP 应用程序,我发现了很多运行良好的应用程序,更准确地说是 Jitsi ( homepage ),它使用基于 native 代码的 Java 库来处理 LGPL 许可下的 RTP 内容。我试着关注 this tutorial使用 libjitsi 但不幸的是它给了我一个错误...此时,我不确定是否可以在 android 项目上使用 Libjitsi,因为它通常用于 Java 项目。

我遇到错误的步骤(使用 Android Studio)

  • 我已经从 sources 中包含的 build.xml 编译了 libjitsi并将生成的 jar 直接放在我项目的 lib/文件夹中。
  • 我在我的 build.gradle 文件中添加了对 libjitsi.jar 的依赖
  • 在 Activity 的onCreate方法中调用静态方法Libjitsi.start()

错误日志

01-02 17:06:48.304 1523-1523/com.test.example I/LibJitsi﹕ Failed to initialize LibJitsi backend org.jitsi.impl.libjitsi.LibJitsiOSGiImpl. (Exception stack trace follows.) Will try an alternative. java.lang.NoClassDefFoundError: org.osgi.framework.FrameworkUtil at org.jitsi.impl.libjitsi.LibJitsiOSGiImpl.(LibJitsiOSGiImpl.java:34) at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1319) at org.jitsi.service.libjitsi.LibJitsi.start(LibJitsi.java:227) at org.jitsi.service.libjitsi.LibJitsi.start(LibJitsi.java:171) at com.test.example.ui.createconf.CreateConfActivity.onCreate(CreateConfActivity.java:76) at android.app.Activity.performCreate(Activity.java:4465) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) at android.app.ActivityThread.access$600(ActivityThread.java:127) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4441) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native

现在,如果有人已经尝试在 Android 项目上使用 libjitsi,或者如果您知道它不可行,如果您能与我分享您的经验,我将不胜感激。

谢谢

最佳答案

是的libjitsi依赖可以添加到android,你可以试试jitsi-android这是 Jitsi 的 Android 端口项目 。我尝试运行他们的示例应用程序并且编译正常。

但是,我已经为 Android 上的 VOIP 调用共享了 5 个不同的库 in another answer你可以看看并尝试一下。

很高兴!

关于android - 向 Android 项目添加 libjitsi 依赖是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745303/

相关文章:

android - RemoteViews (Widget) 在使用位图时有模糊文本

apple-push-notifications - iOS 13 杀死应用程序,因为它在收到 PushKit VoIP 回调后从未向系统发布来电

android - 在 Android 上显示实时 UDP 或 RTP 流(多播)

python-3.x - 如何创建 rtp 音频的 raw?

ios - 如何使用callkit 框架在iOS 原生ui 调用中显示来电图像?

c++ - 在不重新编码的情况下保存 H.264 RTP 流?

android - 处理来自 GCM 的多个通知/堆叠通知

Android:Strings.xml 中具有 Double 值的字符串格式

android - InstallReferrerClient.startConnection() 抛出错误

linux - 通过grandstream FXO GXW4108 FXO设备在Freepbx上呼出