|
@@ -967,6 +967,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
+
|
|
|
+ removeCall(addr)
|
|
|
}
|
|
|
|
|
|
"C" -> {
|
|
@@ -1078,7 +1080,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (addr.equals(curDeviceUart, true)) {
|
|
|
handoffCall()
|
|
|
} else {
|
|
|
- cancelOutCall(addr, false)
|
|
|
+ cancelOutCall2(addr, false)
|
|
|
}
|
|
|
} else if (Constant.CALL_STATE == Constant.CALL_INCOMING) {
|
|
|
if (addr.equals(curDeviceUart, true)) {
|
|
@@ -1086,17 +1088,15 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
SerialPortHelper.closeSoundChannel(addr)
|
|
|
RingPlayHelper.stopRingTone()
|
|
|
} else {
|
|
|
- cancelOutCall(addr, false)
|
|
|
+ cancelOutCall2(addr, false)
|
|
|
}
|
|
|
} else {
|
|
|
- cancelOutCall(addr, true)
|
|
|
+ cancelOutCall2(addr, true)
|
|
|
}
|
|
|
|
|
|
- //关闭门灯
|
|
|
- val doorAddr = getDoorLightAddr(addr)
|
|
|
- if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
- SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
- }
|
|
|
+ SerialPortHelper.closeSoundChannel(addr)
|
|
|
+
|
|
|
+ removeCall(addr)
|
|
|
}
|
|
|
|
|
|
"R" -> {
|
|
@@ -1361,6 +1361,20 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun removeCall(uart: String) {
|
|
|
+ synchronized(Unit) {
|
|
|
+ if (callingList.size > 0) {
|
|
|
+ val iterator = callingList.iterator()
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ val it = iterator.next()
|
|
|
+ if (uart.equals(it.uart, true)) {
|
|
|
+ iterator.remove()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun cancelOutCall(uart: String, resetCall: Boolean) {
|
|
|
if (FrameHelper.frameDeviceList.size > 0) {
|
|
|
for (frameDevice in FrameHelper.frameDeviceList) {
|
|
@@ -1395,6 +1409,35 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun cancelOutCall2(uart: String, resetCall: Boolean) {
|
|
|
+ if (FrameHelper.frameDeviceList.size > 0) {
|
|
|
+ for (frameDevice in FrameHelper.frameDeviceList) {
|
|
|
+ if (frameDevice.device != null && uart.equals(frameDevice.device.ethMac, true)) {
|
|
|
+ updateCallText(getString(R.string.call_standby))
|
|
|
+
|
|
|
+ for (item in callingList) {
|
|
|
+ if (item.deviceId == frameDevice.device.id) {
|
|
|
+ val callTcp = VoiceUtil.voiceCancel(item.tid, frameDevice.device.id, item.interactionId)
|
|
|
+ TcpClient.getInstance().sendMsg(callTcp.toJson())
|
|
|
+
|
|
|
+ SerialPortHelper.closeSoundChannel(uart)
|
|
|
+ //关闭门灯
|
|
|
+ val doorAddr = getDoorLightAddr(uart.toUpperCase(Locale.ROOT))
|
|
|
+ if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
+ SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (resetCall) {
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun rejectCall() {
|
|
|
updateCallText(getString(R.string.call_standby))
|
|
|
VoiceUtil.rejectAudioCall(tid, curDeviceId, fromId, curInteractionVO!!.id)
|
|
@@ -1809,15 +1852,6 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
cancelOutCall(interactionVO.fromEthIp, false)
|
|
|
}*/
|
|
|
|
|
|
- /*if (callingList.size > 0) {
|
|
|
- for ((index, e) in callingList.withIndex()) {
|
|
|
- if (e.uart.equals(interactionVO.fromEthIp, true)) {
|
|
|
- var item = CallingItem(tcpModel.tid, interactionVO.fromDeviceId, interactionVO.fromEthIp, System.currentTimeMillis(), interactionVO.id)
|
|
|
- callingList.set(index, item)
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
-
|
|
|
if (callingList.size > 0) {
|
|
|
val iterator = callingList.iterator()
|
|
|
while (iterator.hasNext()) {
|
|
@@ -1853,6 +1887,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
+
|
|
|
+ removeCall(interactionVO.fromEthIp)
|
|
|
//}
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.CALLING) {
|
|
|
//我方呼出,对方通话中
|
|
@@ -1869,6 +1905,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
+
|
|
|
+ removeCall(interactionVO.fromEthIp)
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.FAILED) {
|
|
|
//我方呼出,对方不在线,设备离线或其它错误
|
|
|
if (tcpModel.data != null) {
|
|
@@ -1882,6 +1920,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
+
|
|
|
+ removeCall(interactionVO.fromEthIp)
|
|
|
}
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.HANDOFF) {
|
|
|
//对方挂断,不论我方呼出或呼入
|
|
@@ -1899,6 +1939,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
+
|
|
|
+ removeCall(interactionVO.fromEthIp)
|
|
|
}
|
|
|
} else {
|
|
|
if (!TextUtils.isEmpty(interactionVO.toEthIp)) {
|