使用 Android SIP 堆栈进行点对点 SIP 呼叫?

2023-12-21

我一直在寻找一种方法来设置 Android SIP 堆栈,以便能够以临时方式在同一网络上的两个设备之间建立 SIP 呼叫。即无需注册到 SIP 服务器。

我无法让它工作,因为 SIP 演示包括服务器注册,如果没有此步骤,我无法让它拨打或接听电话。

我什至不确定这是否可能。我发现的关于这一点的很少提及是相互冲突的(有些人说可以通过特定的设置来完成,但他们没有说明是什么,有些人说 Android SIP API 不适用于此)。

我想知道是否有人已经让它工作或者有任何关于如何为此配置 API 的线索,因为我想在查看第三方 API 之前使用内置的 SIP API。

我正在开发的应用程序是一个内部应用程序,它将始终在相同的设备上运行,因此 SIP API 并不存在于所有设备上这一事实对我来说不是问题。


我一直被同样的问题困扰。

如果你可以在没有android sip api的情况下完成它,你可以看看rtp api http://developer.android.com/reference/android/net/rtp/package-summary.html它为您提供了一些较低级别的工具来制作 P2P VOIP 应用程序,而无需服务器。

要支持音频会议和类似用途,您需要 实例化两个类作为流的端点:

AudioStream指定远程端点并由网络组成 映射和配置的音频编解码器。 AudioGroup代表本地 一个或多个音频流的端点。 AudioGroup 混合了所有 AudioStreams 并可选择与设备扬声器和 同时麦克风。

对应的是,您必须编写自己的设备发现协议才能了解音频流对等方使用的端口,如此处所述answer https://stackoverflow.com/a/19996334/4408021

如果您只想进行一对一的对话,这个问题并不难,但如果您想进行一对多的对话,这个问题就有点棘手了。

对于一对多的对话,会议主持人必须为他想要呼叫的每个远程设备实例化 n 个音频流。每个远程对等点只有一个音频流链接到主机音频流之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Android SIP 堆栈进行点对点 SIP 呼叫? 的相关文章

  • 外部硬件指纹扫描仪和 Android 设备集成

    我想建立一个android像员工考勤这样的应用程序使用fingerprint scanner 我想知道 是否可以使用外部硬件设备进行指纹识别 扫描 如何将Android应用程序与外部硬件finger集成 打印扫描设备 如何从外部硬件设备获取
  • Firebase FCM 通知图像不会显示

    我在我的项目中使用 FCM 当尝试使用 firebase 撰写通知 功能测试传入通知时 我将标题 正文和图像 URL 添加到消息中 它显示了它应该是什么样子 丰富的通知与图像 但发送给我的通知是正常的 没有任何图像 这是 firebase
  • 我是否需要在我的 Firebase 项目中添加 SHA-1 指纹?

    在 Firebase 上有一个弹出窗口 显示我的项目可以添加指纹 SHA1 因为我只想使用一些 Firebase 服务 例如实时数据库 身份验证 我需要在我的项目中添加指纹吗 该图显示 仅在使用某些 Google Play 服务 如 OAu
  • 在android中的操作栏中标题左侧添加图标

    我想在操作栏中标题的左侧添加一个可点击的图标 按钮 怎么做 以下是我向操作栏添加搜索和设置图标的代码 它们出现在右侧 但我想在标题左侧添加一个新图标 怎么做 XML menu menu
  • 如何在android中直接从.zip文件读取文件而不解压它

    过去几个月我一直在研究 android 现在我的问题是读取放在 sdcard 上的 zip 文件 我已经成功完成了将 zip 文件下载到 SD 卡上的编码 我已将 img zip 文件下载到 SD 卡上 此 img zip 包含 5 个图像
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • Android 中的 ImageView 拖动限制

    我在布局中有一个 ImageView 并在 ImageView 上设置 OnTouchListener 来拖动 ImageView 它工作得很好 我的问题是如何防止将 ImageView 移动到布局范围之外 这是我的代码 活动类别 publ
  • 带有电子墨水显示屏的 Android

    我有兴趣使用 AndroidE Ink http www eink com technology howitworks html为基础的平台 我知道已经是证明了 http vimeo com 3162590MOTO 曾经使用过 但我有兴趣将
  • ListView.hasWindowFocus==true 但子视图 hasWindowFocus==false

    有时我注意到 对于 View v v hasWindowFocus false View v getParent hasWindowFocus true 如果我正确理解文档 情况就不应该如此 v getParent 是 ListView 的
  • 如何使用 Kotlin 在 ListAdapter 中使用 Filterable?

    我会用一个SearchView过滤我的RecyclerView 在 stackoverflow 和其他网站上我发现只是使用的示例Filterable与 Java 和RecyclerView Adapter当我使用时ListAdapter 所
  • 如何使用 Mikephil 饼图从项目中删除小数位

    这是整数的静态值 private int upload 14 bill 15 unbill 85 total 100 unupload 12 sign 10 unsign 90 print 12 unprint 88 设置饼图条目 Arra
  • 如何使用 gradle 动态切换/更改 testInstrumentationRunner

    我的项目有两组不同的测试 一组仅使用默认值运行AndroidJUnitRunner另一个必须使用自定义实现来运行TestRunner extends MonitoringInstrumentation 目前我切换testInstrument
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • 处理网络视图中的链接

    我有我的WebView加载网络视图中的所有链接 但是当我选择电子邮件链接时 它会尝试将其加载到网络视图中 而不是在手机上启动电子邮件应用程序 我该如何解决这个问题 链接是mailto 电子邮件受保护 cdn cgi l email prot
  • 为什么 LayoutInflater 忽略我指定的layout_width 和layout_height 布局参数?

    我在让 LayoutInflater 按预期工作时遇到了严重的困难 其他人也是如此 如何使用layoutinflator在运行时添加视图 https stackoverflow com questions 4735847 help for
  • 使用 jenkins.Creating .apk 文件生成 android 版本

    我正在使用 Jenkins 在 mac 上持续集成 android 应用程序 但是我无法使用 Jenkins 生成 apk 文件 就像我们在 iOS 应用程序中创建 ipa 一样 创建用于在 mac 上分发的 apk 文件的配置是什么 您可
  • java.net.ServerSocket.accept () 在 Android 上不返回

    我正在尝试找到一种方法来远程登录到未root的机器人 我有INTERNET权限处于活动状态 我的设备与我的设备连接在同一网络上Mac OS X通过 WiFi 我可以 ping 通我打开的端口 在最初的实验中 我让它在有根测试设备上工作 但我
  • 如何创建一个类似“隐形”的Android应用程序?

    我想让我的应用程序以某种 隐形 模式运行 我想做的两件主要事情 不以编程方式在已安装的应用程序列表 抽屉 中显示应用程序图标 通过拨号盘启动应用程序 一些特殊的数字组合 我知道我可以删除启动器意图过滤器来隐藏图标
  • 在 Android 中使用 SQL (JDBC) 数据库

    在旧的 Java 应用程序中 我使用以下代码连接到 SQL 数据库并将其用于某些查询 private Connection dbConnection null System setProperty derby system home C C
  • 找不到 com.google.gms:google-services:4.1.0 [重复]

    这个问题在这里已经有答案了 Bitrise 构建失败并出现以下错误 配置根项目 src 时出现问题 无法解析配置 classpath 的所有文件 找不到 com google gms google services 4 1 0 在以下位置进

随机推荐

  • 在 MSSQL 中处理加密数据的最佳实践

    我的用户数据库中有一些数据 我希望对其进行加密 大多数数据都需要在请求时解密 但也有一些密码可以保持加密状态 过去我们会使用密码比较但我相信这现在已经过时了 我已按照步骤操作here http www kodyaz com articles
  • 为什么 Node.js 无法提供 .woff 文件

    我下载了 woff由于中国的某些网络原因 来自 Google 网络字体的文件 之前我尝试过 font face那个在Github 页面 http jiyinyiyong github com she bin 它有效 但这一次我花了一个小时才
  • 更新 Autofac 后出现奇怪的异常

    我之前有一个MVC4应用程序 我已经更新了 Autofac 的版本 一切正常 现在我遇到了这个奇怪的异常 请帮忙 Method not found Autofac Builder IRegistrationBuilder 3 Autofac
  • C++ lambda 表达式 - 编译器如何解释它们?

    我刚刚开始学习 C 11 中的新功能 我正在阅读 C Primer Stanley Lippman 中有关 lambda 的内容 并正在尝试使用它们 我尝试了以下代码 auto func gt int int c 0 return gt i
  • Null FragmentTransaction 被传递给 TabListener.onTabSelected()

    我使用此处提供的示例代码将导航选项卡添加到操作栏 http developer android com guide topics ui actionbar html http developer android com guide topi
  • 如何为异步等待调用创建包装器?

    据我所知 没有内置 或框架扩展 支持ConnectAsync AcceptAsync SendAsync ReceiveAsync等等 我将如何编写自己的包装器 该包装器将受到异步等待机制的支持 例如 我当前的代码处理ReceiveAsyn
  • Java 用 '(撇号/单引号)和 \(反斜杠)一起替换问题

    我好像遇到问题了我有一个查询字符串 其中的值可以包含单引号 这将破坏查询字符串 所以我试图做一个替换来改变 to 这是示例代码 This is it replace 其输出仍然是 This is it 它认为我只是在为引用做一个转义字符 所
  • 未能找到目标 Vuzix Corporation:Vuzix M300 SDK:23

    我正在尝试为 Vuzix M300 智能眼镜开发应用程序 我已经通过 Android SDK Manager 安装了 Vuzix SDK 我已遵循 Vuzix 文档中提到的所有步骤 我还将编译 SDK 版本设置为 Vuzix M300 SD
  • 你调用的对象是空的

    当我在 NUnit 中运行这个程序时 出现错误 你调用的对象是空的 虽然这不是原始程序 但我也遇到了类似的错误 任何帮助表示赞赏 异常发生于 driver Navigate GoToUrl http www yahoo com 程序 usi
  • 逐行将 .txt 读取到批处理变量中

    我有一个批处理脚本 可以将 ping 发送到某些 PC 可用的 PC 被写入文本文件中 因此每台 PC 都站在自己的行中 另一个批处理脚本将一些文件复制到 PC 目前它尝试复制到所有 PC 现在我想修改脚本 以便批处理读出文本文件并仅复制到
  • 图结构中拥有的指针

    在 Rust 社区的慷慨帮助下 我成功地获得了使用托管指针组装的拓扑数据结构的基础 这一切结合得相当好 总的来说我对 Rust 非常兴奋 然后我读了这个post http pcwalton github io blog 2013 06 02
  • reflog 过期并 gc prune 后推送到原点

    我使用以下命令删除了本地存储库中的一些无法访问和悬空的提交 git fsck unreachable dangling no reflogs git reflog expire expire now all git gc prune now
  • 如何使用react js在Fetch API中设置超时

    我在 React js 中使用 fetch post 方法 当向后端发送请求时 需要 7 分钟才能提供响应 然后前端会自动超时 你能帮我解决一下如何在 fetch 方法中设置 10 分钟的时间 让前端等待响应 并且只有当后端花费超过 10
  • 前缀/后缀增量运算符

    我想确保我正确理解按值传递与按引用传递 特别是 我正在查看增量的前缀 后缀版本 对象的运算符 假设我们有以下课程X class X private int i public X i 0 X operator i return this pr
  • 单选按钮在 Chrome 中显示不需要的白色背景。火狐浏览器没问题

    在 Google Chrome 中 单选按钮会在圆圈周围显示不需要的白色背景 这在 Firefox 中并未按预期显示 Please check these images 她是有问题的页面的直接链接 在 Firefox 和 Chrome 中检
  • 是否存在 setfable nthcdr 实现?

    我正在使用 clisp 我想知道是否有任何带有可设置版本的 nthcdr 的库可供我使用 你可以用以下方法解决它 let lst list 1 2 3 4 n 2 setf cdr nthcdr 1 n lst 5 6 7 l gt 1 2
  • 改装 400 错误请求

    这是我用于网络调用的函数 private void getSample Log d getSample OkHttpClient client new OkHttpClient HttpLoggingInterceptor intercep
  • 如何从批处理脚本检查Java安装?

    我需要编写一个批处理脚本来查找是否安装了Java 如果安装了 那么在什么路径下 我觉得它必须是类似这样的 for f j in java exe do set JAVA HOME 但我不明白 附 它必须与带有空格两个的路径一起使用 就像ja
  • Haskell主要函数

    module Main where qsort Ord a gt a gt a qsort qsort x xs qsort smaller x qsort larger where smaller a a lt xs a lt x lar
  • 使用 Android SIP 堆栈进行点对点 SIP 呼叫?

    我一直在寻找一种方法来设置 Android SIP 堆栈 以便能够以临时方式在同一网络上的两个设备之间建立 SIP 呼叫 即无需注册到 SIP 服务器 我无法让它工作 因为 SIP 演示包括服务器注册 如果没有此步骤 我无法让它拨打或接听电