如何使用android.net.sip API从传出呼叫中获取呼叫Id
我想知道当您使用如何使用android.net.sip API从传出呼叫中获取呼叫Id,android,sip,Android,Sip,我想知道当您使用android.net.sipAPI拨打外线电话时,如何获取呼叫id。 我现在正在打一个电话,就像他们在android sip演示中做的那样。 call=manager.makeAudioCall(me.getUriString(),sipAddress,listener,30) 我还在文档中看到,您可以在拨打电话时创建sip会话以获取呼叫id,但我就是搞不懂。有关SipManager的文档,请参阅。在进行音频通话之前,我也会这样做: manager.createSipSessi
android.net.sip
API拨打外线电话时,如何获取呼叫id。
我现在正在打一个电话,就像他们在android sip演示中做的那样。
call=manager.makeAudioCall(me.getUriString(),sipAddress,listener,30)代码>
我还在文档中看到,您可以在拨打电话时创建sip会话以获取呼叫id,但我就是搞不懂。有关SipManager
的文档,请参阅。在进行音频通话之前,我也会这样做:
manager.createSipSession(me, new SipSession.Listener(){
@Override
public void onCalling(SipSession session) {
String callId = session.getCallId();
Log.d(TAG, "onCalling. call ID: " + callId);
}
@Override
public void onRingingBack(SipSession session) {
String callId = session.getCallId();
Log.d(TAG, "onRinging. call ID!!!: " + callId);
}
@Override
public void onCallEstablished(SipSession session,
String sessionDescription) {
String callId = session.getCallId();
Log.d(TAG, "onCallEstablished: call ID!!!: " + callId);
}
});
但是,当我拨出电话时,没有一个方法被调用。我终于找到了问题的解决方案,现在是:
private SipAudioCall myMakeAudioCall(Context context, SipProfile sipProfile, SipProfile peerProfile, int timeout) throws SipException{
SipAudioCall.Listener l = new SipAudioCall.Listener(){
@Override
public void onCallEstablished(SipAudioCall call) {
}
//add more methods if you want to
};
SipAudioCall testCall = new SipAudioCall(context,sipProfile);
testCall.setListener(l);
SipSession.Listener sessionListener = new SipSession.Listener(){
@Override
public void onCalling(SipSession session) {
String callId = session.getCallId();
Log.d(TAG, "onCalling. call ID: " + callId);
}
//add more methods if you want to
};
SipSession ss = manager.createSipSession(sipProfile, sessionListener);
if(ss == null){
throw new SipException("Failed to create SipSession; Network available?");
}
testCall.makeCall(peerProfile, ss, timeout);
Log.d(TAG,"iD: " + ss.getCallId());
return testCall;
}
我们只需创建自己的SipAudioCall
对象,而不是使用我们的管理器进行呼叫。我们使用管理器创建一个SipSession
,我们将在使用SipAudioCall
对象进行调用的方法中使用它。在sip会话中设置调用Id之前可能需要一段时间,给您一个空的调用Id,但是如果您执行Thread.sleep(100)代码>在ss.getCallId()之前
肯定会给你电话号码。