将 Android SIP 连接到 OfficeSip 服务器

Connect Android SIP to OfficeSip server

我正在开发 Android SIP 客户端。我想针对 OfficeSip 服务器对其进行测试。所以我在本地设置了 officeSip 服务器,我可以通过 officeSIP 信使(客户端)连接到它。

信使需要此数据才能登录:

然而,当尝试在 Android 中执行相同操作时,其 SipProfile.Builder 的参数略有不同。值得注意的是:

public SipProfile.Builder (String username, String serverDomain)
public SipProfile.Builder setOutboundProxy (String outboundProxy)

似乎没有可用的服务器地址。

我已经为 serverDomain 参数尝试了以下方法:

但是,我收到 连接错误(当使用 @ 时)或 注册失败 事件(当 / 与/) 后的服务器 IP。错误代码首先是 -4(当设备发生某些错误时,可能是由于错误),紧接着是 -9(客户端正在交易中,无法发起新交易)

如何使用 Android SIP 客户端连接到 OfficeSIP?

编辑: 我设法与使用自定义 SIP 堆栈的 CSipSimpleClient 建立了通信。它只需要服务器名称(等于服务器的域),用户名和密码。

我不确定.. 但不允许使用“@”和“/”,SipProfile.Builder 将创建一个 URI,例如"username@serverDomain(or ip)",带有用户名和服务器域参数。 试着这样设置.. ("user1", "test.com"), ("user1", "1.1.1.1").

API 说明说 "the SIP server domain; if the network address is different from the domain, use setOutboundProxy(String) to set server address" 关于 serverDomain。

事实证明,Android SIP 堆栈还很不成熟且不够完善。

最终我能够通过指定服务器主机名和服务器代理进行连接。 此外,如果服务器域与计算机名称不同,服务器 运行 开启,您将无法连接。域必须匹配 IP 地址或计算机名称,但它们必须匹配才能通过 Android SIP 客户端连接。

我已使用 android SIP API 成功连接到 OfficeSIP。

  1. 下载 SipDemo here
  2. 在WalkieTalkieActivity.java中我修改了代码如下:

    SipProfile.Builder builder = new SipProfile.Builder("test", "officesip.local");

    builder.setPassword("test");

    builder.setOutboundProxy("192.168.10.191");

    builder.setAutoRegistration(真);

    我=builder.build();

  3. 在OfficeSIP测试中是有密码的用户也测试。出站代理是托管 OfficeSIP 的计算机或服务器的 IP,officesip.local 是 SIP 域名,可以在 OfficeSIP 的设置选项卡下找到。

  4. 为了测试这一点,我在 OfficeSIP 上创建了第二个帐户并使用 Sipdroid 登录到该帐户。从那里我在第二个 phone 上调用了 SipDemo 应用程序 运行 并且它工作了。