尝试呼叫时出现异常(SIP)

时间:2011-04-24 14:59:00

标签: android exception sip

我正在开发SIP应用程序,当我想要呼叫某人(在服务器中配置了其标识符)时,我有一个NullPointerException => “试图关闭经理时出错。” 这是代码:

public void initiateCall() {

        updateStatus(sipAddress);

        try {
            SipAudioCall.Listener listener = new SipAudioCall.Listener() {

                @Override
                public void onCallEstablished(SipAudioCall call) {
                    call.startAudio();
                    call.setSpeakerMode(true);
                    call.toggleMute();
                    updateStatus(call);
                }

                @Override
                public void onCallEnded(SipAudioCall call) {
                    updateStatus("Ready.");
                }
            };

            call = manager.makeAudioCall(me.getUriString(), sipAddress, listener, 30);

        }
        catch (Exception e) {
            Log.i("WalkieTalkieActivity/InitiateCall", "Error when trying to close manager.", e);
            if (me != null) {
                try {
                    manager.close(me.getUriString());
                } catch (Exception ee) {
                    Log.i("WalkieTalkieActivity/InitiateCall",
                            "Error when trying to close manager.", ee);
                    ee.printStackTrace();
                }
            }
            if (call != null) {
                call.close();
            }
        }
    }

感谢您的帮助。

3 个答案:

答案 0 :(得分:8)

Android模拟器默认不支持VOIP / SIP库。问题是,manager == null - 这就是你获得NullPointerException的原因。

幸运的是,有一个圆满的工作。下载this link并将其复制到 ... \ .android \ avd \ .avd 文件夹中。

启动您的模拟器和

 Boolean voipSupported = SipManager.isVoipSupported(this);
 Boolean apiSupported = SipManager.isApiSupported(this);

现在应该返回true。

来源:http://xilard.hu/

答案 1 :(得分:0)

Android.net.sip(Sip API)仅适用于Android 2.3+以上的G711。 运营商提供的手机也可能阻止SIP堆栈(android.net.sip)或瘫痪。 SipManager.isVoipSupported(this)&& SipManager.isApiSupported(this)将返回false,因为大多数设备都是你的ie。在这种情况下,您的SipManager对象将始终为null。您应该使用第三方库来实现SIP。

有不同的开源sip堆栈库以及互联网上的项目。您可以下载该项目的源代码。 这是一些流行的开源sip堆栈库的列表,它允许通过互联网进行语音呼叫。

1。Jain sip (I think the best option):

2. Pjsip

3。Mjsip

4。Doubango

有不同的开源项目在他们的项目中使用了这些库。

1.Jain sip:不用于“着名”应用程序。 2. Sipdroid使用MjSip 3. Csipsimple使用PjSip Imsdroid使用doubango。

答案 2 :(得分:-3)

检查Android中的桥接连接和应用程序中的SIP服务器,以获取应用程序的SIP密钥。