其实编译PjSip和生成example apk都比较快,但是在测试example apk时,碰到了问题。
我们的开发环境大多都是局域网,而sip如果要跨网段打电话,就需要sip服务器和stun服务器。
其实,如果我们的手机都在同一个网段的局域网,而且只是测试PjSip的功能,是没有必要使用sip服务器和stun服务器的。
下面说下,不需要sip服务器和stun服务器,只在局域网内测试PjSip功能。
1、打开pjsip-apps\src\swig\java\android\app\src\main\java\org\pjsip\pjsua2\app目录下的MyApp.java
注释掉 public void init(MyAppObserver obs, String app_dir, boolean own_worker_thread)接口中的
//ua_cfg.setStunServer(stun_servers); //局域网测试中,不需要设置stun服务器。
//不需要TCP和TLS transport连接,特别是TLS,在apk运行是报错,TCP可以参考保留
// try {
// ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TCP,
// sipTpConfig);
// } catch (Exception e) {
// System.out.println(e);
// }
// try {
// sipTpConfig.setPort(SIP_PORT+1);
// ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TLS,
// sipTpConfig);
// } catch (Exception e) {
// System.out.println(e);
// }
2、设置sip账号
设置Pjsip中自己的sip账号地址:sip:IP地址,如:sip:192.168.1.100
3、增加一个联系人,联系人设置成:sip:IP地址:6000,如果:sip:192.168.1.100:6000
6000是端口号,example指定了端口号为6000.
4、拨打
A、B在同一个网段的局域网中。
A的ID设置成sip:192.168.1.100,增加一个联系人B,B的地址设置成:sip:192.168.1.106:6000
B的ID设置成sip:192.168.1.106,增加一个联系人A,A的地址设置成:sip:192.168.1.100:6000
可以A拨打B或者B拨打A。
跨网段打电话测试。
1、需要搭建自己的公网sip服务器
2、需要搭建自己的stun服务器或者使用公网的stun服务器,我测试的比较好的服务器是:stun.ideasip.com
3、设置自己的ID:sip:电话@IP地址,如:sip:[email protected]
4、设置注册服务器地址registrar:sip:192.168.1.1
5、设置用户名和密码