做一个SIP通话测试,能呼出,对方也能接听,也能双方说话和讲话。这些都能实现。但是 Listener 不到对方是否接听、挂断这些操作。代码如下,GetService 是服务,SIP是在服务里面注册的,然后在一个Activity呼出。Send_Msg_To_Flist 里面是 Toast, 我就想解决怎么知道对方是在响铃还是已接听 有这方面研究的指导一下,谢谢
public void initiateCall(final String Call_Number) {
try { new Thread() {public void run() {
try{
final SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
if(call.isMuted()) {
call.toggleMute();
}
Send_Msg_To_Flist("已接通");//这个不会显示,但去掉上面的五行代码则 对方会听不见声音,说明上面的三行 启动麦克风 听筒的是执行了的。但这个Send_Msg_To_Flist却为什么不执行?
} public void onCallEnded(SipAudioCall call) {
Send_Msg_To_Flist("onCallEnded"); //这个不会显示
}
public void onRinging(SipAudioCall call, SipProfile caller) {
Send_Msg_To_Flist("onRinging"); //这个不会显示 }
public void onCallBusy(SipAudioCall call) {
Send_Msg_To_Flist("onCallBusy"); //这个不会显示 }
public void onCallHeld(SipAudioCall call) {
Send_Msg_To_Flist("onCallHeld"); //这个不会显示 }
public void onReadyToCall(SipAudioCall call) {
Send_Msg_To_Flist("onReadyToCall"); //这个不会显示 }
};
GetService.call = GetService.manager.makeAudioCall(GetService.me.getUriString(), Call_Number + "@" + GetService.Sip_Domain, listener, 30);
updateStatus(GetService.call);
} catch (Exception e){}
}
}.start();
Send_Msg_To_Flist(GetService.me.getUriString()+"_开始呼叫" + Call_Number + "@" + GetService.Sip_Domain + "中…");
}
catch (Exception e) {
if (GetService.me != null) {
try {
GetService.manager.close(GetService.me.getUriString());
Send_Msg_To_Flist("连线 已断开");
} catch (Exception ee) {}
}
if (GetService.call != null) {
GetService.call.close();
Send_Msg_To_Flist("通话 已断开");
}
}
}
public void initiateCall(final String Call_Number) {
try { new Thread() {public void run() {
try{
final SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
if(call.isMuted()) {
call.toggleMute();
}
Send_Msg_To_Flist("已接通");//这个不会显示,但去掉上面的五行代码则 对方会听不见声音,说明上面的三行 启动麦克风 听筒的是执行了的。但这个Send_Msg_To_Flist却为什么不执行?
} public void onCallEnded(SipAudioCall call) {
Send_Msg_To_Flist("onCallEnded"); //这个不会显示
}
public void onRinging(SipAudioCall call, SipProfile caller) {
Send_Msg_To_Flist("onRinging"); //这个不会显示 }
public void onCallBusy(SipAudioCall call) {
Send_Msg_To_Flist("onCallBusy"); //这个不会显示 }
public void onCallHeld(SipAudioCall call) {
Send_Msg_To_Flist("onCallHeld"); //这个不会显示 }
public void onReadyToCall(SipAudioCall call) {
Send_Msg_To_Flist("onReadyToCall"); //这个不会显示 }
};
GetService.call = GetService.manager.makeAudioCall(GetService.me.getUriString(), Call_Number + "@" + GetService.Sip_Domain, listener, 30);
updateStatus(GetService.call);
} catch (Exception e){}
}
}.start();
Send_Msg_To_Flist(GetService.me.getUriString()+"_开始呼叫" + Call_Number + "@" + GetService.Sip_Domain + "中…");
}
catch (Exception e) {
if (GetService.me != null) {
try {
GetService.manager.close(GetService.me.getUriString());
Send_Msg_To_Flist("连线 已断开");
} catch (Exception ee) {}
}
if (GetService.call != null) {
GetService.call.close();
Send_Msg_To_Flist("通话 已断开");
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货