6

android SIP(android.net.sip)用来VOIP打电话。尝试发送 DTMF。在SipAudioCallandroid 的类中已经给出了两种方法

void sendDtmf(int code, Message result)
Sends a DTMF code.

void sendDtmf(int code)
Sends a DTMF code.

我正在考虑使用sendDtmf(int code)方法发送 DMTF。但我不知道如何验证它是否实际发送。实施此操作后,我在接收方/发送方方面没有任何音调。调用这个对我没有任何影响(因为它的后台处理不可见)。任何人都可以请让我知道如何验证相同的内容吗?另请解释我使用第二种方法sendDtmf(int code, Message result)

4

3 回答 3

2

使用 sip 发送 DTMF 主要有三种方法:

  1. 带内RTP 有效载荷
  2. 生成的DTMF 音
  3. sip 信息消息(已过时且很可能未使用)

很可能它正在使用带内 RTP 有效负载数据包。尽管我知道的大多数 sip 堆栈都有某种选项来选择要发送的 DTMF 类型。

抱歉,我对内置的 Android SIP 堆栈一无所知,因此我无法直接回答有关实现的问题。

我要检查 DTMF 是否正确发送是使用WireShark之类的东西来捕获 RTP 音频流。然后,您可以使用 wiresharks voip 调用图分析选项,它将在 RTP 中显示 DTMF 事件!

VOIP 呼叫图分析输出

于 2014-03-01T07:18:23.117 回答
1

The android.net.sip has support only for dtmf mode RFC 2883. You can easily see these messages with a software like wireshark and/or from your server side logs (or other peer logs). Just make sure that the other party has support for this kind of dtmf (RFC 2883 support).

于 2014-03-03T17:40:22.217 回答
0

我使用 Counterpath X-Lite V4.9.8 来帮助开发一个使用原生 SIP 库的 Android OS SIP 应用程序。X-Lite Softphone/Preferences/Calls 应设置为“通过 RFC 2833 发送”。

一旦您有一个双向音频的活动 SIP 呼叫,并且您使用 yourcall.sendDtmf(5) 作为示例,在该呼叫期间,您可以通过 X-Lite 应用程序听到 DTMF 音,音持续约 1 /2 秒。

于 2017-07-18T00:57:46.567 回答