我正在使用android SIP(android.net.sip)进行VOIP呼叫。正在尝试发送DTMF。在android的SipAudioCall类中,给出了两种方法
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)的用法。
发布于 2014-03-01 15:18:23
通过sip发送DTMF主要有三种方法:
它最有可能使用的是带内RTP有效载荷数据包。尽管我所知道的大多数sip堆栈都有某种选项来选择要发送的DTMF类型。
对不起,我对内置的Android SIP堆栈一无所知,所以我不能直接回答有关这些实现的问题。
为了检查DTMF是否被正确发送,我会使用WireShark之类的东西来捕获RTP音频流。然后,您可以使用wiresharks RTP选项,它将在voip call graph analysis中显示DTMF事件!

发布于 2014-03-04 01:40:22
android.net.sip仅支持dtmf模式RFC2883。您可以使用wireshark之类的软件和/或从服务器端日志(或其他对等日志)轻松查看这些消息。只需确保对方支持这种dtmf (RFC2883支持)。
发布于 2017-07-18 08:57:47
我使用Counterpath -LiteV4.9.8来帮助开发一个使用原生SIP库的Android OS SIP应用程序。X-Lite软电话/首选项/呼叫应设置为“通过RFC 2833发送”。
一旦您有一个具有双向音频的活动SIP呼叫,并且您使用yourcall.sendDtmf(5)作为示例,在该呼叫期间,您可以通过X-Lite应用程序听到DTMF音调,每个音调持续约1/2秒。
https://stackoverflow.com/questions/19490731
复制相似问题