Android Native SIP Stack未注册客户端

时间:2018-03-21 19:03:03

标签: android sip

我正在使用Android SIP进行voip通话。它已成功注册星号服务器。现在,有时它没有注册星号服务器,也没有注册任何SipRegistrationListener回调方法。

try {
        SipProfile.Builder builder = new SipProfile.Builder(username, domain);
        builder.setPassword("my_password");
        builder.setProtocol("UDP");
        builder.setSendKeepAlive(true);
        builder.setAutoRegistration(true);
        SipProfile sipProfile = builder.build();

        SipManager manager = SipManager.newInstance(this);

        Intent intent = new Intent();
        intent.setAction("app.package.INCOMING_CALL");
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_ACTION);

        manager.open(sipProfile, pi, null);
        manager.setRegistrationListener(sipProfile.getUriString(), new SipRegistrationListener() {
            @Override
            public void onRegistering(String s) {
                Log.i("SIP Registration", "onRegistering()");
            }

            @Override
            public void onRegistrationDone(String s, long l) {
                Log.i("SIP Registration", "onRegistrationDone()");
            }

            @Override
            public void onRegistrationFailed(String s, int i, String s1) {
                Log.wtf("SIP Registration", "onRegistrationFailed()");
            }
        });

    } catch (ParseException e) {
        e.printStackTrace();
    } catch (SipException e) {
        e.printStackTrace();
    }

在manager.open()之后,不会调用任何注册侦听器。我们知道还有其他第三方库可用于voip。但是会有很多返工。

1 个答案:

答案 0 :(得分:1)

我也坚持这一点,看起来像本地sip堆栈非常多! 主要问题是:
- 我们不能同时使用多个SIP帐户。只有第一个正在注册,所有后续帐户都会失败,直到您关闭第一个帐户(通常它们会抛出IN_PROGRESS错误)
- 有时它甚至不会创建一个帐户(此时它可能会抛出错误,甚至根本不会调用监听器。)

我仍然无法找到修复程序,但为了让它最终注册,请执行以下操作:
1)从您的应用程序关闭当前打开的SIP配置文件
2)去手机应用程序 - 设置 - 互联网帐户'设置(路径可能不同)。你的所有SIP帐户都在那里列出。检查sip帐户列表是否为空 3)如果列表中有帐户 - 手动关闭它们 4)重启设备
5)启动你的应用程序并尝试打开并注册sip配置文件。 TADA!现在报名很好。怪异