我正在使用 Android 2.3+ API 开发一个 SIP 客户端应用程序,我可以使用 SipDemo 示例代码成功拨打和接听来电。但在同伴接听电话之前我什么也听不到。
众所周知,当我们拨打普通的 GSM 电话时,在您呼叫的人接听您的电话之前,我们可以听到“DO..DO...DO”。
现在让我向您展示我的 SipAudioCall.Listener 代码。我知道 SipAudioCall.Listener.onRingingBack 在对等方收到邀请时被调用,而 SipAudioCall.Listener.onCallEstablished 在对等方应答时被调用。
我不知道在 SipAudioCall.ListeneronRingingBack 方法中做什么才能听到任何事情。当我打电话时,我的身边保持沉默,直到同伴接听我的电话......(对不起我的英语不好)
提前致谢!
private final SipAudioCall.Listener sipAudioCallListener = new SipAudioCall.Listener(){
@Override
public void onRinging(SipAudioCall call, SipProfile caller) {
Log.e(TAG, "onRinging caller="+caller.getUriString()+"; call="+call.getState()+"; caller="+caller.getUriString());
super.onRinging(call, caller);
}
@Override
public void onRingingBack(SipAudioCall call) {
Log.e(TAG, "onRingingBack: call="+call.getState());
super.onRingingBack(call);
}
@Override
public void onCallEstablished(SipAudioCall call) {
Log.e(TAG, "onCallEstablished: call="+call.getState());
super.onCallEstablished(call);
}
@Override
public void onCallEnded(SipAudioCall call) {
Log.e(TAG, "onCallEnded: call="+call.getState());
super.onCallEnded(call);
}
@Override
public void onCallBusy(SipAudioCall call) {
Log.e(TAG, "onCallBusy: call="+call.getState());
super.onCallBusy(call);
}
@Override
public void onCallHeld(SipAudioCall call) {
Log.e(TAG, "onCallHeld: call="+call.getState());
super.onCallHeld(call);
}
@Override
public void onError(SipAudioCall call, final int errorCode, final String errorMessage) {
Log.e(TAG, "###onError errorCode="+errorCode+"; errorMessage="+errorMessage);
super.onError(call, errorCode, errorMessage);
}
@Override
public void onChanged(final SipAudioCall call) {
Log.e(TAG, "onChanged: call="+call.getState());
super.onChanged(call);
switch(call.getState()){
case SipSession.State.OUTGOING_CALL:
//making an outgoing call
break;
case SipSession.State.OUTGOING_CALL_RING_BACK:
//peer receives ringing event, what can I do to hear any thing until peer answers the call??
//...
break;
case SipSession.State.IN_CALL:
//call established, it works fine.
call.startAudio();
call.setSpeakerMode(false);
if(call.isMuted()){
call.toggleMute();
}
break;
case SipSession.State.READY_TO_CALL:
break;
}
}
};