Prechádzať zdrojové kódy

呼叫优化:6s内重复呼叫无效

weizhengliang 1 rok pred
rodič
commit
a3467d5c31

+ 37 - 23
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/MainActivity.kt

@@ -914,7 +914,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
                     "B" -> {
                         //分机挂断
-                        outCallList.remove(addr.toUpperCase(Locale.ROOT))
+                        //outCallList.remove(addr.toUpperCase(Locale.ROOT))
                         if (Constant.CALL_STATE == Constant.CALL_CALLING) {
                             if (addr.equals(curDeviceUart, true)) {
                                 /*EventBus.getDefault().post(MessageEvent("handoff", Constant.EVENT_END_CALL))
@@ -1052,6 +1052,18 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
             return
         }*/
 
+        //判断是否是一定时间内的重复呼叫
+        if (callingList.size > 0) {
+            for (callingItem in callingList) {
+                val time = System.currentTimeMillis()
+                Log.e(TAG, "tcp call $uart, ${callingItem.uart}, time: ${time - callingItem.time}")
+                if (uart.equals(callingItem.uart, true) && (time - callingItem.time < 6000)) {
+                    //重复呼叫,直接返回
+                    return
+                }
+            }
+        }
+
         if (Constant.TCP_CONNECTED) {
             //通过串口地址查找到对应分机设备id
             if (FrameHelper.frameDeviceList.size > 0 ) {
@@ -1350,7 +1362,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                     Log.d("tcp", "cancel bed call: " + frameDevice.frame.fullName)
                     bedMac = frameDevice.device.ethMac.toUpperCase(Locale.ROOT)
                     SerialPortHelper.closeSoundChannel(bedMac)
-                    outCallList.remove(bedMac)
+                    //outCallList.remove(bedMac)
                 }
 
                 //关闭门灯
@@ -1503,7 +1515,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             showCallFragment()
 
                             //从呼叫列表移除
-                            outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
+                            //outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
 
                             //关闭门灯
                             val doorAddr = getDoorLightAddr(curDeviceUart)
@@ -1511,18 +1523,20 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                                 SerialPortHelper.closeDoorLight(doorAddr)
                             }
 
-                            val sipCore = WdklSipService.getCore()
-                            if (sipCore == null || TextUtils.isEmpty(targetSip)) {
-                                //通话失败,重置并返回主界面
-                                showMessage("Core或targetSipId为空!")
-                                handoffCall()
-                            } else {
-                                val addressToCall = sipCore.interpretUrl(targetSip)
-                                val params = sipCore.createCallParams(null)
-                                params?.isVideoEnabled = false
-                                if (addressToCall != null) {
-                                    sipCore.inviteAddressWithParams(addressToCall, params!!)
-                                    Log.d(TAG, ">>>>>>>>>>> invite address: " + addressToCall.asString())
+                            if (SettingConfig.getSipEnabled(activity)) {
+                                val sipCore = WdklSipService.getCore()
+                                if (sipCore == null || TextUtils.isEmpty(targetSip)) {
+                                    //通话失败,重置并返回主界面
+                                    showMessage("Core或targetSipId为空!")
+                                    handoffCall()
+                                } else {
+                                    val addressToCall = sipCore.interpretUrl(targetSip)
+                                    val params = sipCore.createCallParams(null)
+                                    params?.isVideoEnabled = false
+                                    if (addressToCall != null) {
+                                        sipCore.inviteAddressWithParams(addressToCall, params!!)
+                                        Log.d(TAG, ">>>>>>>>>>> invite address: " + addressToCall.asString())
+                                    }
                                 }
                             }
                         } else if (tcpModel.getAction() == TcpAction.VoiceAction.SUCCESS) {
@@ -1539,7 +1553,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             }*/
 
                             //呼叫成功,添加到呼叫列表
-                            outCallList.add(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
+                            //outCallList.add(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
 
                             /*if (callingList.size > 0) {
                                 for ((index, e) in callingList.withIndex()) {
@@ -1575,7 +1589,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             //我方呼出,对方拒绝
                             val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                             //从呼叫列表移除
-                            outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
+                            //outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
 
                             //if (curInteractionVO!!.id == interactionVO.id) {
                                 Constant.CALL_STATE = Constant.CALL_STANDBY
@@ -1597,7 +1611,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             //}
 
                             //从呼叫列表移除
-                            outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
+                            //outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
 
                             showMessage(R.string.call_busy)
                             //关闭分机呼叫和门灯
@@ -1624,7 +1638,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             //对方挂断,不论我方呼出或呼入
                             val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                             //从呼叫列表移除
-                            outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
+                            //outCallList.remove(interactionVO.fromEthIp.toUpperCase(Locale.ROOT))
 
                             //if (curInteractionVO!!.id == interactionVO.id) {
                                 Constant.CALL_STATE = Constant.CALL_STANDBY
@@ -1692,14 +1706,14 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                                 }
 
                                 //从呼叫列表移除
-                                outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
+                                //outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
                             }
                         } else if (tcpModel.action == TcpAction.VoiceAction.RS485ACCEPT) {
                             Log.d(TAG, "rs485 accept: " + tcpModel.data)
                             if (tcpModel.data != null) {
                                 val ethMac = tcpModel.data.toString()
                                 //从呼叫列表移除
-                                outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
+                                //outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
                             }
                             RingPlayHelper.stopRingTone()
                             showCallFragment()
@@ -1712,7 +1726,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             if (tcpModel.data != null) {
                                 val ethMac = tcpModel.data.toString()
                                 //从呼叫列表移除
-                                outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
+                                //outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
                             }
 
                             handoffCall()
@@ -1722,7 +1736,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                             if (tcpModel.data != null) {
                                 val ethMac = tcpModel.data.toString()
                                 //从呼叫列表移除
-                                outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
+                                //outCallList.remove(ethMac.toUpperCase(Locale.ROOT))
 
                                 rejectCall()
                                 SerialPortHelper.closeSoundChannel(ethMac)

+ 1 - 1
middleware/build.gradle

@@ -84,5 +84,5 @@ dependencies {
     compile 'com.fasterxml.jackson.core:jackson-databind:2.9.5'
     compile 'io.swagger:swagger-annotations:1.5.14'
 
-    implementation 'org.mongodb:bson:3.6.3'
+    implementation 'org.mongodb:bson:3.12.10'
 }