我正在使用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)
。
答案 0 :(得分:2)
使用sip发送DTMF主要有三种方法:
很可能是使用带内RTP有效载荷数据包。虽然我知道大多数sip堆栈都有某种选择来选择要发送的DTMF类型。
抱歉,我对内置的Android SIP堆栈一无所知,所以我无法直接回答有关实施的问题。
我要检查DTMF是否正确发送会使用类似WireShark的内容来捕获RTP音频流。然后,您可以使用wiresharks voip call graph analysis选项,该选项将在RTP中显示DTMF事件!
答案 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秒。