2016-09-29 85 views
0

我正在開發一個簡單的應用程序,允許用戶使用SIP協議啓動呼叫。SipAudioCall.endCall不拒絕呼叫

在我的IncomingCallActivity我有2個按鈕:接受或拒絕呼叫。 接受onClickListener:

View.OnClickListener accept = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      incomingCall.answerCall(30); 
     } catch (SipException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

下降聽衆:

View.OnClickListener decline = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      incomingCall.endCall(); 
     } catch (SipException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

的問題是,endCall()並不拒絕它,主叫方仍在等待有關拒絕他的召喚一些SIP數據包。

如何警告呼叫者拒絕他的呼叫?

+0

當你調用'endCall'時,你還能聽到來自另一端的呼叫者嗎? – user1506104

+0

沒有。當我連接後掉話時,它工作正常。 問題是隻有當我想放棄而不接電話時。 –

+0

是在調用的兩端使用的這個應用程序嗎?或者您是否在Google Store中使用此應用程序?我可以看到你試圖根據你的代碼拒絕'incomingCall'。 – user1506104

回答

0

我在一年前完成了這項工作,但無法再找到我的SIP應用源代碼。從我記得,我從SipAudioCall.ListeneronRinging()方法得到incomingCall對象。然後從該對象中調用endCall()

SipAudioCall.Listener listener = new SipAudioCall.Listener() { 
    @Override 
    public void onRinging(SipAudioCall call, SipProfile caller) { 
     try { 
     //call.answerCall(30); 
     // 1. Save SipAudioCall object into your incoming call 
     incomingCall = call; 
     // 2. In your DECLINE View.OnClickListener, call endCall() 
     // on this same object 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 
}; 
+0

根據您的評論,onRinging()從未被稱爲可能是因爲您調用了'incomingCall = sipDataManager.getSipManager()。takeAudioCall(intent,listener);'right inside 'onReceive()'。您應該在您的'AudioCall.Listener'內採取/拒絕呼叫,因爲SIP呼叫是一項異步任務。 – user1506104

+0

如何在偵聽器中獲取SipAudioCall?我需要一個SipAudioCall對象來爲它設置監聽器。我正在使用'takeAudioCall(callIntent,callListener)'來獲取它。 –

+0

你能弄明白嗎? – user1506104

相關問題