Android SipProfile Uri UDP 端口错误

标签 android uri port sip

我想通过 UPD 连接到我的 sip 服务器,我有用户名、服务器的 IP 地址(域)和端口(例如 9990)。

我收到以下错误:

android.net.sip.SipException: SipService.createSession() returns null

在这一行:mSipManager.register(mSipProfile, 300, mSipRegistrationListener);


这是我使用的代码,改编自 android 文档:

private void startSip() {
    LogUtils.LOGE(TAG, "[startSip]");
    if (SipManager.isVoipSupported(this) && SipManager.isApiSupported(this)) {
        if (mSipManager == null) {
            mSipManager = SipManager.newInstance(this);
        }

        try {
            SipProfile.Builder builder = new SipProfile.Builder("sip:user@domainIP:9990");
            builder.setPassword("pass"); 
            builder.setProtocol("UDP"); 

            mSipProfile = builder.build();
            mSipManager.open(mSipProfile);
            mSipManager.register(mSipProfile, 300, mSipRegistrationListener);

            mSipManager.setRegistrationListener(mSipProfile.getUriString(), mSipRegistrationListener); 

        } catch (ParseException e) {
            e.printStackTrace();
        } catch (SipException e) {
            e.printStackTrace();
        }
    } else {
        Log.d(TAG, "SIP is not supported!");
    }
}

如果我尝试像这样设置配置文件:

mSipProfile.Builder builder = new SipProfile.Builder("user", "domain:port");

我得到了同样的错误。

如果我尝试:

mSipProfile.Builder builder = new SipProfile.Builder("user", "domain");
builder.setPort(9990);

和上面一样的错误。


如果我不指定端口,我将得到以下信息:

注册未运行,错误代码= -4,后跟: 注册超时,错误代码= -5

关于如何使用 UPD 和自定义端口注册到我的服务器有什么想法吗?顺便说一句,我正在 WiFi 上进行测试,我已经在 list 中设置了权限和所需的“使用功能”。

最佳答案

事实证明,让它工作的唯一方法是使用 PendingIntent,即使您不需要或不使用它也是如此。并且还设置了一个空的监听器@open(),看下面的代码:

            mSipProfile = builder.build();

            Intent i = new Intent();
            i.setAction("android.SipDemo.INCOMING_CALL");
            PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);

            mSipManager.open(mSipProfile, pi, null);

关于Android SipProfile Uri UDP 端口错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24077623/

相关文章:

android - 播放声音

android - 在gradle中根据Android buildType切换Application.mk文件

android - 在android中使用动画的两个 Activity 之间的黑屏

android - 如何使用 Firebase 建立用户存在机制?

windows - 隐藏端口并将http加密为https

android - 来自 Intent 的 Skype 聊天屏幕

ruby - ERROR URI::InvalidURIError: Bad URI(is not URI?) 因为浏览器

ruby-on-rails - 直接访问页面时忽略上一个 URL 的 URI(request.referer).path

python - 如何释放端口然后第二次运行Tornado应用程序?

php - 从具有 localhost 的主机访问 Vagrant 机器上的 symfony web 服务器