|
@@ -340,9 +340,11 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (Constant.DEVICE_STATUS == 1) {
|
|
|
connectSocket()
|
|
|
tv_device_status.setText("设备状态: 已启用")
|
|
|
- SerialPortHelper.changeRegisterState()
|
|
|
- SerialPortHelper.changeCallingMode("0") //双工模式
|
|
|
- isMacRegister = true
|
|
|
+ if (!isMacRegister) {
|
|
|
+ isMacRegister = true
|
|
|
+ SerialPortHelper.changeRegisterState()
|
|
|
+ SerialPortHelper.changeCallingMode("0") //双工模式
|
|
|
+ }
|
|
|
} else {
|
|
|
tv_device_status.setText("设备状态: 未注册或未启用")
|
|
|
}
|
|
@@ -510,6 +512,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//分机接听
|
|
|
RingPlayHelper.stopRingTone()
|
|
|
VoiceUtil.acceptAudioCall(curDeviceId, fromId, curInteractionVO!!.id)
|
|
|
+ checkCallSuccess()
|
|
|
} else {
|
|
|
//分机呼叫
|
|
|
if (curInteractionVO == null) {
|
|
@@ -607,6 +610,22 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //分机接听后检查通话是否正常连接上
|
|
|
+ private fun checkCallSuccess() {
|
|
|
+ //3s还未连接上则判定为通话失败
|
|
|
+ Handler().postDelayed({
|
|
|
+ val session = gEngineKit!!.currentSession
|
|
|
+ if (session != null && session.state == EnumType.CallState.Connected) {
|
|
|
+ //连接通话成功
|
|
|
+ } else {
|
|
|
+ if (!callEnded) {
|
|
|
+ showMessage("通话连接失败,通话结束")
|
|
|
+ callEnd()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 3000)
|
|
|
+ }
|
|
|
+
|
|
|
private fun startCall(uart: String) {
|
|
|
if (SocketManager.getInstance().socketOpen() && Constant.TCP_CONNECTED) {
|
|
|
//通过串口地址查找到对应分机设备id
|
|
@@ -870,6 +889,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (Constant.autoAnswer) {
|
|
|
//自动接听
|
|
|
VoiceUtil.acceptAudioCall(tcpModel.toId, fromId, interactionVO?.id)
|
|
|
+ checkCallSuccess()
|
|
|
} else {
|
|
|
//响铃并手动接听
|
|
|
SerialPortHelper.callInChannel(curDeviceUart)
|
|
@@ -894,6 +914,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
fromId,
|
|
|
curInteractionVO!!.id
|
|
|
)
|
|
|
+ } else {
|
|
|
+ checkCallSuccess()
|
|
|
}
|
|
|
//关闭门灯
|
|
|
val doorAddr = getDoorLightAddr(curDeviceUart)
|
|
@@ -1006,6 +1028,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
} else if (tcpModel.action == TcpAction.VoiceAction.RS485ACCEPT) {
|
|
|
RingPlayHelper.stopRingTone()
|
|
|
VoiceUtil.acceptAudioCall(curDeviceId, fromId, curInteractionVO!!.id)
|
|
|
+ checkCallSuccess()
|
|
|
} else if (tcpModel.action == TcpAction.VoiceAction.RS485HANDOFF) {
|
|
|
gEngineKit!!.endCall()
|
|
|
Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
@@ -1029,9 +1052,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (Constant.PART_ID != null) {
|
|
|
presenter.loadPartSettings(Constant.PART_ID)
|
|
|
}
|
|
|
- } else if (tcpModel.action == TcpAction.DeviceAction.DEVICE_REFRESH) {
|
|
|
- initDevice()
|
|
|
- } else if (tcpModel.action == TcpAction.DeviceAction.RESTART) {
|
|
|
+ } else if (tcpModel.action == TcpAction.DeviceAction.DEVICE_REFRESH || tcpModel.action == TcpAction.DeviceAction.RESTART) {
|
|
|
//收到重启app指令,若当前处于正常待机状态则直接重启app,否则等待通话结束再重启
|
|
|
if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
|
|
|
AppUpdateHelper.restartApp(activity)
|