我正在使用 jain sip 开发软电话,它即将完成,但存在以下问题: 我正在使用 restcomm-android-sdk在 android-jain-sip-ri-1.2.233.jar 问题是 假设两个客户是客户A和客户B,
如果 client A 和 client B 使用的是 3G/4G ,那么一切正常,因为他们都可以互相打电话,并且可以互相发语音
如果客户端 A 使用 3G/4G 网络,而 客户端 B 使用公共(public) WiFi,则两者可以相互调用,但只有 客户端 A 可以听到 Client B 的声音,client B 听不到任何声音。
我觉得是跟路由和nat有关的东西, 这是我的 android list
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:name="android.hardware.telephony" android:required="true"/>
<uses-feature android:name="android.hardware.sip.voip" android:required="true" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
谁能帮忙解决这个问题?
最佳答案
NAT 在您使用的公共(public) Wifi 中可能限制太多。 你试过非公共(public)wifi吗? 您使用哪个 SIP 服务器?你用RestComm吗作为服务器?
为确保需要网络捕获,也称为 wireshark 跟踪(在客户端 - 您可以尝试 https://play.google.com/store/apps/details?id=lv.n3o.shark&hl=fr,也可以在服务器端尝试)
如果是这样(NAT 限制太多,STUN 和 TURN 将需要在 Android 客户端上实现,计划在路线图上)。如果您使用 RestComm,另一种选择是创建一个 session 应用程序并让两个客户端调用该 session 应用程序以查看是否有帮助。
您是否尝试过在不同的公共(public) wifi 网络上使用两个客户端?
关于java - jain sip 如何在 android 中连接 WiFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512940/