【问题标题】:Exception when trying to call(SIP)尝试呼叫时出现异常(SIP)
【发布时间】:2011-04-24 14:59:00
【问题描述】:

我正在开发一个 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();
            }
        }
    }

感谢您的帮助。

【问题讨论】:

  • 在哪一行抛出异常?

标签: android exception sip


【解决方案1】:

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

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

启动你的模拟器和

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

现在应该返回 true。

来源:http://xilard.hu/

【讨论】:

    【解决方案2】:

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

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

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

    2.Pjsip

    3.Mjsip

    4.Doubango

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

    1.Jain sip:未在“著名”应用程序中使用。 2. Sipdroid 使用 MjSip 3. Csipsimple 使用 PjSip 4. Imsdroid 使用 doubango。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-07-01
        • 2021-05-19
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多