|
@@ -258,8 +258,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
|
|
|
//设备启用,进入正常模式
|
|
|
if (Constant.DEVICE_STATUS == 1) {
|
|
|
+ connectSocket()
|
|
|
tv_device_status.setText("设备状态: 已启用")
|
|
|
SerialPortHelper.changeRegisterState()
|
|
|
+ SerialPortHelper.changeCallingMode("0") //双工模式
|
|
|
isMacRegister = true
|
|
|
} else {
|
|
|
tv_device_status.setText("设备状态: 未注册或未启用")
|
|
@@ -273,10 +275,6 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
presenter.loadPartSettings(Constant.PART_ID)
|
|
|
}
|
|
|
|
|
|
- if (Constant.DEVICE_STATUS == 1) {
|
|
|
- connectSocket()
|
|
|
- }
|
|
|
-
|
|
|
//检查版本
|
|
|
//checkAppVersion()
|
|
|
}
|
|
@@ -388,8 +386,14 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
val addr = content[1].substring(0, content[1].length - 1)
|
|
|
when (content[0]) {
|
|
|
"A" -> {
|
|
|
- //分机呼叫
|
|
|
- startOutCall(addr)
|
|
|
+ if (Constant.CALL_STATE == Constant.CALL_INCOMING && addr.equals(curDeviceUart)) {
|
|
|
+ //分机接听
|
|
|
+ RingPlayHelper.stopRingTone()
|
|
|
+ VoiceUtil.acceptAudioCall(curDeviceId, fromId, curInteractionVO!!.id)
|
|
|
+ } else {
|
|
|
+ //分机呼叫
|
|
|
+ startOutCall(addr)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
"B" -> {
|
|
@@ -398,7 +402,11 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
//通话中直接挂断
|
|
|
gEngineKit!!.endCall()
|
|
|
Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
- } else if (Constant.CALL_STATE == Constant.CALL_OUTGOING || Constant.CALL_STATE == Constant.CALL_OUT_SUCCESS) {
|
|
|
+ } else if (Constant.CALL_STATE == Constant.CALL_INCOMING) {
|
|
|
+ rejectCall()
|
|
|
+ SerialPortHelper.closeSoundChannel(addr)
|
|
|
+ RingPlayHelper.stopRingTone()
|
|
|
+ } else {
|
|
|
//呼叫时取消
|
|
|
cancelOutCall(addr)
|
|
|
}
|
|
@@ -416,7 +424,6 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
val curTime = System.currentTimeMillis()
|
|
|
if (sosList.size > 0) {
|
|
|
val sosItem = sosList.stream().filter { addr.equals(it.addr) }.findFirst().orElse(null)
|
|
|
-
|
|
|
if (sosItem == null) {
|
|
|
//该按钮还没有呼叫过
|
|
|
//Log.e("serialport", "sosclick 111111111: " + addr)
|
|
@@ -482,7 +489,9 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
curDeviceId = frameDevice.device.id
|
|
|
updateCallText("正在呼叫-->$uart, $curDeviceId")
|
|
|
VoiceUtil.startAudioCall(curDeviceId)
|
|
|
- Constant.CALL_STATE = Constant.CALL_OUTGOING
|
|
|
+ if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
|
|
|
+ Constant.CALL_STATE = Constant.CALL_OUTGOING
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -503,6 +512,12 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun rejectCall() {
|
|
|
+ updateCallText("待机中")
|
|
|
+ VoiceUtil.rejectAudioCall(curDeviceId, fromId, curInteractionVO!!.id)
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
+ }
|
|
|
+
|
|
|
private fun startSosCall(uart: String) {
|
|
|
if (FrameHelper.frameDeviceList.size > 0 ) {
|
|
|
for (frameDevice in FrameHelper.frameDeviceList) {
|
|
@@ -694,6 +709,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
fromId = tcpModel.fromId
|
|
|
curDeviceUart = interactionVO.toEthMac
|
|
|
curInteractionVO = interactionVO
|
|
|
+ curDeviceId = interactionVO.toDeviceId
|
|
|
|
|
|
//关闭门灯
|
|
|
val doorAddr = getDoorLightAddr(interactionVO.toEthMac)
|
|
@@ -701,10 +717,16 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
}
|
|
|
|
|
|
- //todo
|
|
|
updateCallText("收到来电")
|
|
|
Constant.CALL_STATE = Constant.CALL_INCOMING
|
|
|
- VoiceUtil.acceptAudioCall(tcpModel.toId, fromId, interactionVO?.id)
|
|
|
+ if (Constant.autoAnswer) {
|
|
|
+ //自动接听
|
|
|
+ VoiceUtil.acceptAudioCall(tcpModel.toId, fromId, interactionVO?.id)
|
|
|
+ } else {
|
|
|
+ //响铃并手动接听
|
|
|
+ SerialPortHelper.callInChannel(interactionVO.toEthMac)
|
|
|
+ RingPlayHelper.playRingTone(activity, R.raw.incoming_call2, false)
|
|
|
+ }
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.ACCEPT) {
|
|
|
//我方呼出,对方接受
|
|
|
fromId = tcpModel.fromId
|
|
@@ -755,9 +777,17 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.CALLING) {
|
|
|
//我方呼出,对方通话中
|
|
|
- Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
- updateCallText("待机中")
|
|
|
+ if (curInteractionVO!!.id == interactionVO.id) {
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
+ updateCallText("待机中")
|
|
|
+ }
|
|
|
showMessage("对方忙线中")
|
|
|
+ //关闭分机呼叫和门灯
|
|
|
+ SerialPortHelper.closeSoundChannel(interactionVO.fromEthMac)
|
|
|
+ val doorAddr = getDoorLightAddr(interactionVO.fromEthMac)
|
|
|
+ if (!TextUtils.isEmpty(doorAddr)) {
|
|
|
+ SerialPortHelper.closeDoorLight(doorAddr)
|
|
|
+ }
|
|
|
} else if (tcpModel.getAction() == TcpAction.VoiceAction.FAILED) {
|
|
|
//我方呼出,对方不在线,设备离线或其它错误
|
|
|
Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
@@ -788,6 +818,8 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
updateCallText("待机中")
|
|
|
showMessage("对方取消呼叫")
|
|
|
+ RingPlayHelper.stopRingTone()
|
|
|
+ SerialPortHelper.closeSoundChannel(curDeviceUart)
|
|
|
}
|
|
|
}
|
|
|
} else if (tcpModel.type == TcpType.SOS) {
|
|
@@ -831,6 +863,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
handler.post {
|
|
|
if (state == EnumType.CallState.Connected) {
|
|
|
//更新界面显示
|
|
|
+ callEnded = false
|
|
|
Constant.CALL_STATE = Constant.CALL_CALLING
|
|
|
updateCallText("通话中")
|
|
|
SerialPortHelper.openSoundChannel(curDeviceUart)
|
|
@@ -923,7 +956,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
}
|
|
|
|
|
|
SerialPortHelper.closeSoundChannel(curDeviceUart)
|
|
|
- Constant.CALL_STATE = Constant.CALL_CALLING
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
updateCallText("待机中")
|
|
|
}
|
|
|
|
|
@@ -989,7 +1022,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
private fun updateTcpState() {
|
|
|
if (Constant.TCP_CONNECTED) {
|
|
|
view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_success)
|
|
|
- if (SocketManager.getInstance().userState == 0) {
|
|
|
+ if (Constant.DEVICE_STATUS == 1 && SocketManager.getInstance().userState == 0) {
|
|
|
//如果socket断开了则重连
|
|
|
connectSocket()
|
|
|
}
|
|
@@ -1043,7 +1076,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
|
|
|
if (!Constant.TCP_CONNECTED) {
|
|
|
TcpClient.getInstance().doConnect()
|
|
|
}
|
|
|
- if (SocketManager.getInstance().userState == 0) {
|
|
|
+ if (Constant.DEVICE_STATUS == 1 && SocketManager.getInstance().userState == 0) {
|
|
|
//如果socket断开了则重连
|
|
|
connectSocket()
|
|
|
}
|