|
@@ -1,16 +1,15 @@
|
|
|
package com.wdkl.ncs.android.component.home.service
|
|
|
|
|
|
-import android.app.Notification
|
|
|
import android.app.Service
|
|
|
import android.content.Intent
|
|
|
import android.os.Binder
|
|
|
import android.os.CountDownTimer
|
|
|
import android.os.IBinder
|
|
|
import android.text.TextUtils
|
|
|
-import android.util.Log
|
|
|
import com.google.gson.Gson
|
|
|
import com.wdkl.core.consts.Urls
|
|
|
import com.wdkl.core.socket.SocketManager
|
|
|
+import com.wdkl.ncs.android.component.home.util.Util
|
|
|
import com.wdkl.ncs.android.component.nursehome.common.Constants
|
|
|
import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
|
|
|
import com.wdkl.ncs.android.middleware.tcp.TcpClient
|
|
@@ -20,17 +19,14 @@ import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
|
|
|
import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
|
|
|
import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
|
|
|
import com.wdkl.ncs.android.middleware.utils.MessageEvent
|
|
|
-import com.wdkl.skywebrtc.SkyEngineKit
|
|
|
import org.greenrobot.eventbus.EventBus
|
|
|
-import org.greenrobot.eventbus.Subscribe
|
|
|
-import org.greenrobot.eventbus.ThreadMode
|
|
|
import java.util.*
|
|
|
|
|
|
class APPService : Service() {
|
|
|
private val TAG = APPService::class.java.simpleName
|
|
|
internal var myBinder = ServiceBinder()
|
|
|
|
|
|
- private var CALL_TIMEOUT = 12 //多久可以再次点击
|
|
|
+ private var CALL_TIMEOUT = 12 //拨出超时秒数
|
|
|
//呼叫倒计时
|
|
|
lateinit var countDownTimer: CountDownTimer
|
|
|
|
|
@@ -38,15 +34,11 @@ class APPService : Service() {
|
|
|
var tcpModel: TcpModel? = null
|
|
|
}
|
|
|
|
|
|
- var isThread: Boolean = true
|
|
|
-
|
|
|
override fun onCreate() {
|
|
|
super.onCreate()
|
|
|
- EventBus.getDefault().register(this)
|
|
|
-// checkStatus()
|
|
|
- connectWebsocket()
|
|
|
- connectWebsocket2()
|
|
|
initCountDownTimer()
|
|
|
+ connectRTC()
|
|
|
+ resendVoiceCallAndSuccess()
|
|
|
}
|
|
|
|
|
|
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
|
|
@@ -58,85 +50,69 @@ class APPService : Service() {
|
|
|
return myBinder
|
|
|
}
|
|
|
|
|
|
- var timer: Timer? = null
|
|
|
- var timerTask: TimerTask? = null
|
|
|
-
|
|
|
- private fun checkStatus() {
|
|
|
- if (timer != null) timer!!.purge()
|
|
|
- if (timerTask != null) timerTask!!.cancel()
|
|
|
- timer = Timer()
|
|
|
- timerTask = object : TimerTask() {
|
|
|
+ var rtcTimer: Timer? = null
|
|
|
+ var rtcTimerTask: TimerTask? = null
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重连wdklRTC
|
|
|
+ */
|
|
|
+ private fun connectRTC() {
|
|
|
+ if (rtcTimer != null) rtcTimer!!.purge()
|
|
|
+ if (rtcTimerTask != null) rtcTimerTask!!.cancel()
|
|
|
+ rtcTimer = Timer()
|
|
|
+ rtcTimerTask = object : TimerTask() {
|
|
|
override fun run() {
|
|
|
- try {
|
|
|
- } catch (e: Exception) {
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- timer!!.schedule(timerTask, 0, 30000)
|
|
|
- }
|
|
|
-
|
|
|
- var timer2: Timer? = null
|
|
|
- var timerTask2: TimerTask? = null
|
|
|
-
|
|
|
- private fun connectWebsocket() {
|
|
|
- if (timer2 != null) timer2!!.purge()
|
|
|
- if (timerTask2 != null) timerTask2!!.cancel()
|
|
|
- timer2 = Timer()
|
|
|
- timerTask2 = object : TimerTask() {
|
|
|
- override fun run() {
|
|
|
-// WebsocketUtil.connectWS()//定时检测Websocket;如有断开;及时联接
|
|
|
- if (!TcpClientHandler.connecteds) {
|
|
|
+ if (!TcpClientHandler.getConnected()) {
|
|
|
EventBus.getDefault().post(MessageEvent("", 14))
|
|
|
if (!TextUtils.isEmpty(Constants.sip_id)) {
|
|
|
- // 连接socket:登录
|
|
|
SocketManager.getInstance().connect(Urls.WS, Constants.sip_id, 0)
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- timer2!!.schedule(timerTask2, 8000, 5000)
|
|
|
+ rtcTimer!!.schedule(rtcTimerTask, 8000, 5000)
|
|
|
}
|
|
|
|
|
|
- var timer3: Timer? = null
|
|
|
- var timerTask3: TimerTask? = null
|
|
|
-
|
|
|
- private fun connectWebsocket2() {
|
|
|
- if (timer3 != null) timer3!!.purge()
|
|
|
- if (timerTask3 != null) timerTask3!!.cancel()
|
|
|
- timer3 = Timer()
|
|
|
- timerTask3 = object : TimerTask() {
|
|
|
+ var resendVoiceTimer: Timer? = null
|
|
|
+ var resendVoiceTimerTask: TimerTask? = null
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重发拨出成功和去电的挂断命令
|
|
|
+ */
|
|
|
+ private fun resendVoiceCallAndSuccess() {
|
|
|
+ val _this = this
|
|
|
+ if (resendVoiceTimer != null) resendVoiceTimer!!.purge()
|
|
|
+ if (resendVoiceTimerTask != null) resendVoiceTimerTask!!.cancel()
|
|
|
+ resendVoiceTimer = Timer()
|
|
|
+ resendVoiceTimerTask = object : TimerTask() {
|
|
|
override fun run() {
|
|
|
-// WebsocketUtil.connectWS()//定时检测Websocket;如有断开;及时联接
|
|
|
- if (TcpClientHandler.connecteds && tcpModel != null) {
|
|
|
-
|
|
|
- var interactionVO: InteractionVO? = null
|
|
|
- if (tcpModel!!.data.javaClass.name == String::class.java.name) {
|
|
|
- interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
|
|
|
- } else {
|
|
|
- interactionVO = tcpModel?.data as InteractionVO
|
|
|
- }
|
|
|
-// Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
|
|
|
-// Log.e(TAG, "tcpModel" + tcpModel?.toJson())
|
|
|
+ if (!TcpClientHandler.getConnected()) {
|
|
|
+ //断开连接后亮屏
|
|
|
+ Util.wakeUpAndUnlock(_this)
|
|
|
+ } else if (tcpModel != null){
|
|
|
+ var interactionVO: InteractionVO? = null
|
|
|
+ if (tcpModel!!.data.javaClass.name == String::class.java.name) {
|
|
|
+ interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
|
|
|
+ } else {
|
|
|
+ interactionVO = tcpModel?.data as InteractionVO
|
|
|
+ }
|
|
|
|
|
|
- //todo 给服务器发送挂断 tcp
|
|
|
- if (interactionVO != null) {
|
|
|
- if (tcpModel?.type == TcpType.VOICE) {
|
|
|
- if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
|
|
|
- val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
|
|
|
- TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
- } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
|
|
|
- val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
|
|
|
- TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
- }
|
|
|
+ if (interactionVO != null) {
|
|
|
+ if (tcpModel?.type == TcpType.VOICE) {
|
|
|
+ if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
|
|
|
+ val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
|
|
|
+ TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
+ } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
|
|
|
+ val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
|
|
|
+ TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- tcpModel = null
|
|
|
+ }
|
|
|
+ tcpModel = null
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- timer3!!.schedule(timerTask3, 2000, 1000)
|
|
|
+ resendVoiceTimer!!.schedule(resendVoiceTimerTask, 2000, 2000)
|
|
|
}
|
|
|
|
|
|
override fun onDestroy() {
|
|
@@ -145,7 +121,6 @@ class APPService : Service() {
|
|
|
countDownTimer.cancel()
|
|
|
}
|
|
|
stopForeground(true)// 停止前台服务--参数:表示是否移除之前的通知
|
|
|
- EventBus.getDefault().unregister(this)
|
|
|
}
|
|
|
|
|
|
inner class ServiceBinder : Binder() {
|
|
@@ -156,7 +131,6 @@ class APPService : Service() {
|
|
|
fun initCountDownTimer() {
|
|
|
countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
|
|
|
override fun onTick(millisUntilFinished: Long) {
|
|
|
-
|
|
|
}
|
|
|
|
|
|
override fun onFinish() {
|
|
@@ -166,11 +140,8 @@ class APPService : Service() {
|
|
|
} else {
|
|
|
interactionVO = tcpModel?.data as InteractionVO
|
|
|
}
|
|
|
-// Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
|
|
|
-// Log.e(TAG, "tcpModel" + tcpModel?.toJson())
|
|
|
|
|
|
-
|
|
|
- //todo 给服务器发送挂断 tcp
|
|
|
+ //给服务器发送挂断 tcp
|
|
|
if (interactionVO != null) {
|
|
|
if (tcpModel?.type == TcpType.VOICE) {
|
|
|
if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
|
|
@@ -187,86 +158,4 @@ class APPService : Service() {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// companion object {
|
|
|
-// fun hangUp() {
|
|
|
-//
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
- @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
- fun onMoonEvent(messageEvent: MessageEvent) {
|
|
|
- if (messageEvent.tag == Constants.EVENT_TCP_BREAK) {
|
|
|
- tcpModel = messageEvent.getMessage() as TcpModel
|
|
|
-// countDownTimer.start()
|
|
|
-
|
|
|
-// Thread(Runnable {
|
|
|
-// while (isThread) {
|
|
|
-// if (TcpClientHandler.connecteds) {
|
|
|
-//
|
|
|
-// var interactionVO: InteractionVO? = null
|
|
|
-// if (tcpModel!!.data.javaClass.name == String::class.java.name) {
|
|
|
-// interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
|
|
|
-// } else {
|
|
|
-// interactionVO = tcpModel?.data as InteractionVO
|
|
|
-// }
|
|
|
-//// Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
|
|
|
-//// Log.e(TAG, "tcpModel" + tcpModel?.toJson())
|
|
|
-//
|
|
|
-//
|
|
|
-// //todo 给服务器发送挂断 tcp
|
|
|
-// if (interactionVO != null) {
|
|
|
-// if (tcpModel?.type == TcpType.VOICE) {
|
|
|
-// if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
|
|
|
-// val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
|
|
|
-// TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
-// } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
|
|
|
-// val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
|
|
|
-// TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// tcpModel = null
|
|
|
-// isThread = false
|
|
|
-// }
|
|
|
-// try {
|
|
|
-// Thread.sleep(1000)
|
|
|
-// } catch (e: InterruptedException) {
|
|
|
-// e.printStackTrace()
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// }).start()
|
|
|
-
|
|
|
- } else if (messageEvent.tag == Constants.EVENT_TCP_RETRANSMISSION) {
|
|
|
-// var interactionVO: InteractionVO? = null
|
|
|
-// if (tcpModel!!.data.javaClass.name == String::class.java.name) {
|
|
|
-// interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
|
|
|
-// } else {
|
|
|
-// interactionVO = tcpModel?.data as InteractionVO
|
|
|
-// }
|
|
|
-//// Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
|
|
|
-//// Log.e(TAG, "tcpModel" + tcpModel?.toJson())
|
|
|
-//
|
|
|
-//
|
|
|
-// //todo 给服务器发送挂断 tcp
|
|
|
-// if (interactionVO != null) {
|
|
|
-// if (tcpModel?.type == TcpType.VOICE) {
|
|
|
-// if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
|
|
|
-// val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
|
|
|
-// TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
-// } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
|
|
|
-// val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
|
|
|
-// TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// tcpModel = null
|
|
|
-// }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
}
|