Просмотр исходного кода

sip服务重启时需要重新注册才有效

weizhengliang 6 месяцев назад
Родитель
Сommit
b042219bbe

+ 15 - 0
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -49,11 +49,13 @@ import com.wdkl.ncs.android.middleware.tcp.enums.*
 import com.wdkl.ncs.android.middleware.utils.CommonUtils
 import com.wdkl.ncs.android.middleware.utils.ContactHelper
 import com.wdkl.ncs.android.middleware.utils.StringUtil
+import com.wdkl.ncs.host.sip.core.LinphoneManager
 import com.wdkl.ncs.keepbackground.work.AbsWorkService
 import com.wdkl.rtc.rtc.AudioFocusManager
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import org.linphone.core.TransportType
 import java.util.*
 import java.util.concurrent.ConcurrentLinkedQueue
 import java.util.concurrent.ScheduledExecutorService
@@ -392,6 +394,19 @@ class WdKeepAliveService : AbsWorkService() {
                     || tcpModel.getAction() == TcpAction.VoiceAction.CANCEL
                     || tcpModel.getAction() == TcpAction.VoiceAction.VOICE_OFF) {
                     EventBus.getDefault().post(MessageEvent(tcpModel, 2))
+                } else if (tcpModel.getAction() == TcpAction.VoiceAction.SIP_RECONNECT) {
+                    //重连sip
+                    if (SettingConfig.getSipEnabled(BaseApplication.appContext)) {
+                        if (!TextUtils.isEmpty(Constants.sipId) && !TextUtils.isEmpty(Constants.sip_ip)) {
+                            LinphoneManager.getInstance(BaseApplication.appContext)
+                                .createProxyConfig(
+                                    Constants.sipId!!,
+                                    Constants.sipId!!,
+                                    "${Constants.sip_ip}:5060",
+                                    TransportType.Udp
+                                )
+                        }
+                    }
                 }
             }
 

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -76,6 +76,8 @@ public class DeviceChannel {
                     } else {
                         EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.EVENT_NEW_TCP));
                     }
+                } else if (tcpModel.getAction() == TcpAction.VoiceAction.SIP_RECONNECT) {
+                    EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.EVENT_NEW_TCP));
                 }
                 break;
             case IM:

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/enums/TcpAction.java

@@ -106,6 +106,7 @@ public interface TcpAction {
         HCALL("手柄呼叫"),
         HRESPONSE("响应手柄"),
         HRESPONSED("响应过手柄了"),
+        SIP_RECONNECT("重连SIP"),
         NO_MATCH("没有匹配");