Android Native SIP DTMF

时间:2013-10-21 09:28:29

标签: android sip

我正在使用android SIP(android.net.sip)进行VOIP通话。试图发送DTMF。在SipAudioCall类的android中已经给出了两个方法

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)

3 个答案:

答案 0 :(得分:2)

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

  1. 带内RTP payloads
  2. 生成DTMF tones
  3. sip信息消息(过时且很可能未使用)
  4. 很可能是使用带内RTP有效载荷数据包。虽然我知道大多数sip堆栈都有某种选择来选择要发送的DTMF类型。

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

    我要检查DTMF是否正确发送会使用类似WireShark的内容来捕获RTP音频流。然后,您可以使用wiresharks voip call graph analysis选项,该选项将在RTP中显示DTMF事件!

    VOIP Call Graph Analysis output

答案 1 :(得分:1)

android.net.sip仅支持dtmf模式RFC 2883。 您可以使用wireshark等软件和/或服务器端日志(或其他对等日志)轻松查看这些消息。 只需确保对方支持这种dtmf(RFC 2883支持)。

答案 2 :(得分:0)

我使用Counterpath X-Lite V4.9.8来帮助使用本机SIP库开发Android OS SIP应用程序。 X-Lite Softphone /首选项/通话应设置为"通过RFC 2833发送"。

一旦你有一个带有双向音频的有效SIP呼叫,并且你使用你的call.sendDtmf(5),作为一个例子,在那个呼叫期间,你可以通过X-Lite应用程序听到DTMF音调持续约1/2秒。