我想通过 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/