我正在使用Android SIP API为SIP服务器创建我的SIP客户端和免费PBX。但我遇到了这个问题,在调用某个扩展时,如果这个用户没有注册到服务器,它会在8秒内给我错误响应。这是我的密码。
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
// Much of the client's interaction with the SIP Stack will
// happen via listeners. Even making an outgoing call, don't
// forget to set up a listener to set things up once the call is
// established.
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
if (call.isMuted())
call.toggleMute();
updateStatus("call established.");
}
@Override
public void onCallEnded(SipAudioCall call) {
updateStatus("call ended.");
}
@Override
public void onError(SipAudioCall call, int errorCode,
String errorMessage) {
delay = System.currentTimeMillis() - delay;
delay = delay / 1000;
Log.v("", "call failed: time taken in decision is " + delay
+ " seconds.");
endCall(call);
makeGsmCall(numberString);
super.onError(call, errorCode, errorMessage);
}
};
delay=System.currentTimeMillies();
SipState.sipAudioCall = SipState.sipManager.makeAudioCall(SipState.localSipProfile.getUriString(), sipAddress,
listener, 0);
在这段代码中,onError()方法在8秒钟后被调用。我们能把它最小化吗?或者,如果有其他方法我们可以做到这一点?
此外,我还看到过其他应用程序,如sipdoid和linephone,它们似乎很快就会通知指定的用户名不可用。
请帮帮我。谢谢。
当您的SIP注册时,它会发送确认。如果还好的话。你将得到的响应将是"准备好",否则它将给你一个错误代码,可以在这个页面上看到
https://stuff.mit.edu/afs/sipb/project/android/OldFiles/docs/reference/android/net/sip/SipErrorCode.html
通过参考这个,你可以看到你得到了什么错误。此外,还有一个"错误消息"字符串。您可以将其保存在字符串中,然后显示在UI上。
希望这能帮助