|
@@ -52,6 +52,7 @@ import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
|
|
|
import com.wdkl.ncs.android.middleware.udp.ServerInfoUtil
|
|
|
import com.wdkl.ncs.android.middleware.utils.AppUtil
|
|
|
import com.wdkl.ncs.android.middleware.utils.CommonUtils
|
|
|
+import com.wdkl.ncs.janus.rtc.WebRTCEngine
|
|
|
import com.wdkl.ncs.janus.util.JanusConstant
|
|
|
import kotlinx.android.synthetic.main.conversion_box_main_lay.*
|
|
|
import kotlinx.android.synthetic.main.main_activity_layout.*
|
|
@@ -117,6 +118,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
|
|
|
private var sosList = ArrayList<SosItem>()
|
|
|
private var outCallList = ArrayList<String>()
|
|
|
+ //通话时需要开启的门灯
|
|
|
+ private var doorOnList = ArrayList<String>()
|
|
|
+ //通话时需要关闭的门灯
|
|
|
+ private var doorOffList = ArrayList<String>()
|
|
|
|
|
|
private var serverIp = ""
|
|
|
|
|
@@ -789,9 +794,31 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//Log.d("onSerialPortData", " rs485 data: $hexStr")
|
|
|
}
|
|
|
|
|
|
+ private val runnable = Runnable {
|
|
|
+ if (Constant.CALL_STATE == Constant.CALL_CALLING) {
|
|
|
+ WebRTCEngine.getInstance().muteAudio(false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//串口处理
|
|
|
override fun serialPortBedOnclick(str: String) {
|
|
|
try {
|
|
|
+ if (Constant.calling) {
|
|
|
+ //正在通话中,先静音然后再开启,防止噪音
|
|
|
+ WebRTCEngine.getInstance().muteAudio(true)
|
|
|
+ //handler.removeCallbacks(runnable)
|
|
|
+ //handler.postDelayed(runnable, 300)
|
|
|
+ handler.postDelayed({
|
|
|
+ if (Constant.calling) {
|
|
|
+ WebRTCEngine.getInstance().muteAudio(false)
|
|
|
+ }
|
|
|
+ }, 300)
|
|
|
+ }
|
|
|
+ } catch (ex: Exception) {
|
|
|
+ ex.printStackTrace()
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
val newStr: String = CutSerialPortUtil.delHeadAndEnd(str, "$", "#")
|
|
|
val content = newStr.split(",").toTypedArray()
|
|
|
Log.d("serialPortBedOnclick", "newStr==$newStr")
|
|
@@ -830,18 +857,21 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
|
|
|
handoffCall()
|
|
|
} else {
|
|
|
- cancelOutCall(addr, false)
|
|
|
+ //cancelOutCall(addr, false)
|
|
|
+ cancelCall(addr, false)
|
|
|
}
|
|
|
} else if (Constant.CALL_STATE == Constant.CALL_INCOMING) {
|
|
|
if (addr.equals(curDeviceUart, true)) {
|
|
|
rejectCall()
|
|
|
- SerialPortHelper.closeSoundChannel(addr)
|
|
|
+ //SerialPortHelper.closeSoundChannel(addr)
|
|
|
RingPlayHelper.stopRingTone()
|
|
|
} else {
|
|
|
- cancelOutCall(addr, false)
|
|
|
+ //cancelOutCall(addr, false)
|
|
|
+ cancelCall(addr, false)
|
|
|
}
|
|
|
} else {
|
|
|
- cancelOutCall(addr, true)
|
|
|
+ //cancelOutCall(addr, true)
|
|
|
+ cancelCall(addr, true)
|
|
|
}
|
|
|
|
|
|
//关闭门灯
|
|
@@ -994,6 +1024,34 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//关闭门灯
|
|
|
val doorAddr = getDoorLightAddr(uart)
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
+ if (Constant.calling) {
|
|
|
+ doorOffList.add(doorAddr!!)
|
|
|
+ } else {
|
|
|
+ SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun cancelCall(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("待机中")
|
|
|
+ VoiceUtil.cancelAudioCall(frameDevice.device.id)
|
|
|
+ if (resetCall) {
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //SerialPortHelper.closeSoundChannel(uart)
|
|
|
+ //关闭门灯
|
|
|
+ val doorAddr = getDoorLightAddr(uart)
|
|
|
+ if (Constant.calling) {
|
|
|
+ doorOffList.add(doorAddr!!)
|
|
|
+ } else {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
}
|
|
@@ -1233,6 +1291,34 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
}
|
|
|
|
|
|
+ private fun checkDoorLight() {
|
|
|
+ if (doorOnList.size > 0) {
|
|
|
+ for (addr in doorOnList) {
|
|
|
+ Log.d("door", "111doorOn light addr: $addr")
|
|
|
+ if (doorOffList.contains(addr)) {
|
|
|
+ doorOffList.remove(addr)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ Log.d("door", "222doorOn light addr: $addr")
|
|
|
+ if (Constant.colorLight) {
|
|
|
+ SerialPortHelper.openDoorLightGreen(addr)
|
|
|
+ } else {
|
|
|
+ SerialPortHelper.openDoorLightRed(addr)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (doorOffList.size > 0) {
|
|
|
+ for (addr in doorOffList) {
|
|
|
+ Log.d("door", "doorOff light addr: $addr")
|
|
|
+ SerialPortHelper.closeDoorLight(addr)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ doorOnList.clear()
|
|
|
+ doorOffList.clear()
|
|
|
+ }
|
|
|
+
|
|
|
private fun updateCallText(str: String) {
|
|
|
runOnUiThread {
|
|
|
tv_call_state.setText("呼叫状态: " + str)
|
|
@@ -1327,10 +1413,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
targetSip = interactionVO.fromSipId
|
|
|
|
|
|
//关闭门灯
|
|
|
- val doorAddr = getDoorLightAddr(curDeviceUart)
|
|
|
+ /*val doorAddr = getDoorLightAddr(curDeviceUart)
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
updateCallText("收到来电")
|
|
|
Constant.CALL_STATE = Constant.CALL_INCOMING
|
|
@@ -1383,10 +1469,14 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//开启门灯
|
|
|
val doorAddr = getDoorLightAddr(interactionVO.fromEthMac.toUpperCase(Locale.ROOT))
|
|
|
if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
- if (Constant.colorLight) {
|
|
|
- SerialPortHelper.openDoorLightGreen(doorAddr)
|
|
|
+ if (Constant.calling) {
|
|
|
+ doorOnList.add(doorAddr!!)
|
|
|
} else {
|
|
|
- SerialPortHelper.openDoorLightRed(doorAddr)
|
|
|
+ if (Constant.colorLight) {
|
|
|
+ SerialPortHelper.openDoorLightGreen(doorAddr)
|
|
|
+ } else {
|
|
|
+ SerialPortHelper.openDoorLightRed(doorAddr)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.REJECT) {
|
|
@@ -1613,6 +1703,9 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//VoiceUtil.handoffAudioCall(curDeviceId, fromId, curInteractionVO!!.id)
|
|
|
|
|
|
removeCallFragment()
|
|
|
+ AppTool.Time.delay(1500) {
|
|
|
+ checkDoorLight()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|