0

我正在使用 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 秒后被调用。我们能把它最小化吗?或者如果有其他方法我们可以实现?

我还看到了其他应用程序,如 sipdroid 和 linephone,它们似乎没有时间告诉指定的用户名不可用。

请帮我。谢谢。

4

1 回答 1

1

当您的 SIP 注册时,它会发送确认。如果还好。您将得到的响应将是“就绪”,否则它会给您一个错误代码,可以在此页面上看到

https://stuff.mit.edu/afs/sipb/project/android/OldFiles/docs/reference/android/net/sip/SipErrorCode.html

通过参考this,您可以看到您遇到了什么错误。还有一个错误消息的字符串。您可以将其保存在字符串中,然后在 UI 上显示。

希望这可以帮助

于 2015-06-12T07:27:15.797 回答