我正在使用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。但是会有很多返工。
答案 0 :(得分:1)
我也坚持这一点,看起来像本地sip堆栈非常多!
主要问题是:
- 我们不能同时使用多个SIP帐户。只有第一个正在注册,所有后续帐户都会失败,直到您关闭第一个帐户(通常它们会抛出IN_PROGRESS错误)
- 有时它甚至不会创建一个帐户(此时它可能会抛出错误,甚至根本不会调用监听器。)
我仍然无法找到修复程序,但为了让它最终注册,请执行以下操作:
1)从您的应用程序关闭当前打开的SIP配置文件
2)去手机应用程序 - 设置 - 互联网帐户'设置(路径可能不同)。你的所有SIP帐户都在那里列出。检查sip帐户列表是否为空
3)如果列表中有帐户 - 手动关闭它们
4)重启设备
5)启动你的应用程序并尝试打开并注册sip配置文件。 TADA!现在报名很好。怪异