2013-10-21 88 views
4

我使用android SIP(android.net.sip)VOIP通話。嘗試發送DTMF。在SipAudioCall類的android二方法已經給Android原生SIP DTMF

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)

回答

2

有兩種使用SIP發送DTMF方式主要有三種:

  1. 帶產生RTP payloads
  2. DTMF tones
  3. SIP INFO消息(過時的,最有可能不使用)

最有可能的是它使用帶內RTP有效載荷數據包。雖然我知道大多數sip堆棧都有某種選擇來選擇DTMF發送的類型。

對不起,我不知道內置的Android的SIP協議棧什麼,所以我不能對那裏實施直接回答問題。

我會做什麼檢查出DTMF正確發送是使用類似WireShark捕捉RTP音頻流。然後,您可以使用wiresharks voip call graph analysis選項,將顯示在RTP的DTMF事件!

VOIP Call Graph Analysis output

1

的android.net.sip只爲DTMF模式RFC 2883.支持 你可以很容易地看到Wireshark之​​類軟件,這些消息和/或從你的服務器端日誌(或其他同行日誌) 。 只要確保對方有這類的DTMF(RFC 2883支持)的支持。

0

我CounterPath公司使用的X精簡版V4.9.8,以幫助開發使用本地SIP庫的Android操作系統SIP應用。 X-Lite Softphone/Preferences/Calls應設置爲「通過RFC 2833發送」。

一旦您有雙向音頻的活動SIP呼叫,並且您使用yourcall.sendDtmf(5)作爲例子,在該呼叫期間,您可以通過X-Lite應用程序聽到DTMF音調,每個音調持續約1/2秒。

+0

此外這個答案可能會有所幫助https://stackoverflow.com/questions/43515604/tonegenerator-crashes-in-android-6-0/45179525#45179525 – crockwave