|
@@ -5,9 +5,13 @@ import android.content.Context
|
|
import android.content.Intent
|
|
import android.content.Intent
|
|
import android.content.IntentFilter
|
|
import android.content.IntentFilter
|
|
import android.net.ConnectivityManager
|
|
import android.net.ConnectivityManager
|
|
|
|
+import android.os.CountDownTimer
|
|
import android.os.Handler
|
|
import android.os.Handler
|
|
import android.os.Message
|
|
import android.os.Message
|
|
|
|
+import android.os.SystemClock
|
|
import android.support.v4.app.Fragment
|
|
import android.support.v4.app.Fragment
|
|
|
|
+import android.support.v7.widget.LinearLayoutManager
|
|
|
|
+import android.text.TextUtils
|
|
import android.util.Log
|
|
import android.util.Log
|
|
import android.view.View
|
|
import android.view.View
|
|
import android.view.animation.AnimationUtils
|
|
import android.view.animation.AnimationUtils
|
|
@@ -18,22 +22,30 @@ import com.wdkl.app.ncs.callingbed.sip.SipStatus
|
|
import com.vvsip.ansip.IVvsipServiceListener
|
|
import com.vvsip.ansip.IVvsipServiceListener
|
|
import com.vvsip.ansip.VvsipCall
|
|
import com.vvsip.ansip.VvsipCall
|
|
import com.wdkl.app.ncs.callingbed.R
|
|
import com.wdkl.app.ncs.callingbed.R
|
|
-import com.wdkl.app.ncs.callingbed.common.Constant
|
|
|
|
-import com.wdkl.app.ncs.callingbed.common.MessageEvent
|
|
|
|
|
|
+import com.wdkl.app.ncs.callingbed.adapter.NurseConfigAdpter
|
|
import com.wdkl.app.ncs.callingbed.databinding.CallingbedMainLayBinding
|
|
import com.wdkl.app.ncs.callingbed.databinding.CallingbedMainLayBinding
|
|
import com.wdkl.app.ncs.callingbed.fragment.*
|
|
import com.wdkl.app.ncs.callingbed.fragment.*
|
|
import com.wdkl.app.ncs.callingbed.helper.NetHelper
|
|
import com.wdkl.app.ncs.callingbed.helper.NetHelper
|
|
import com.wdkl.app.ncs.callingbed.helper.SerialPortHelper
|
|
import com.wdkl.app.ncs.callingbed.helper.SerialPortHelper
|
|
import com.wdkl.app.ncs.callingbed.helper.SoundPoolHelper
|
|
import com.wdkl.app.ncs.callingbed.helper.SoundPoolHelper
|
|
import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
|
|
import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
|
|
|
|
+import com.wdkl.app.ncs.callingbed2.agreement.CallingbedAgreement
|
|
//import com.wdkl.app.ncs.sip.service.SipService
|
|
//import com.wdkl.app.ncs.sip.service.SipService
|
|
import com.wdkl.ncs.android.lib.base.BaseActivity
|
|
import com.wdkl.ncs.android.lib.base.BaseActivity
|
|
import com.wdkl.ncs.android.lib.utils.TimeHandle
|
|
import com.wdkl.ncs.android.lib.utils.TimeHandle
|
|
import com.wdkl.ncs.android.lib.utils.showMessage
|
|
import com.wdkl.ncs.android.lib.utils.showMessage
|
|
import com.wdkl.ncs.android.lib.vo.filter
|
|
import com.wdkl.ncs.android.lib.vo.filter
|
|
|
|
+import com.wdkl.ncs.android.middleware.common.Constant
|
|
|
|
+import com.wdkl.ncs.android.middleware.common.MessageEvent
|
|
import com.wdkl.ncs.android.middleware.logic.contract.callingbed.CallingbedActivityContract
|
|
import com.wdkl.ncs.android.middleware.logic.contract.callingbed.CallingbedActivityContract
|
|
import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.CallingbedActivityPresenter
|
|
import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.CallingbedActivityPresenter
|
|
|
|
+import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
|
|
|
|
+import com.wdkl.ncs.android.middleware.model.dto.NurseConfigDto
|
|
|
|
+import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
|
|
|
|
+import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
|
|
import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
|
|
import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
|
|
|
|
+import com.wdkl.ncs.android.middleware.tcp.TcpClient
|
|
|
|
+import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
|
|
import kotlinx.android.synthetic.main.callingbed_main_lay.*
|
|
import kotlinx.android.synthetic.main.callingbed_main_lay.*
|
|
import kotlinx.android.synthetic.main.view_title_layout.*
|
|
import kotlinx.android.synthetic.main.view_title_layout.*
|
|
import org.greenrobot.eventbus.EventBus
|
|
import org.greenrobot.eventbus.EventBus
|
|
@@ -51,7 +63,7 @@ import java.lang.ref.WeakReference
|
|
*/
|
|
*/
|
|
|
|
|
|
@Router(path = "/callingbed/main")
|
|
@Router(path = "/callingbed/main")
|
|
-class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMainLayBinding>(), CallingbedActivityContract.View, IVvsipServiceListener,
|
|
|
|
|
|
+class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMainLayBinding>(), CallingbedAgreement, CallingbedActivityContract.View, /*IVvsipServiceListener,*/
|
|
SerialPortUtil.ISerialPortBedOnclickEvent, SerialPortUtil.ISerialPortBedOnclickString{
|
|
SerialPortUtil.ISerialPortBedOnclickEvent, SerialPortUtil.ISerialPortBedOnclickString{
|
|
|
|
|
|
private lateinit var receiver: TimeReceiver
|
|
private lateinit var receiver: TimeReceiver
|
|
@@ -62,20 +74,28 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
//一定时间无操作返回主界面
|
|
//一定时间无操作返回主界面
|
|
private var backTimeout = 0
|
|
private var backTimeout = 0
|
|
|
|
|
|
|
|
+ private lateinit var linearLayout : LinearLayoutManager
|
|
|
|
+ private lateinit var nurseConfigAdpter : NurseConfigAdpter
|
|
|
|
+ private var configList = ArrayList<NurseConfigDto>()
|
|
|
|
+ private var sipServiceRunning :Boolean = false
|
|
|
|
+
|
|
|
|
+ //呼叫倒计时
|
|
|
|
+ lateinit var countDownTimer: CountDownTimer
|
|
|
|
+
|
|
//主信息
|
|
//主信息
|
|
private val mainFragment = "main_fragment"
|
|
private val mainFragment = "main_fragment"
|
|
//医嘱
|
|
//医嘱
|
|
- private val doctorFragment = "doctor_fragment"
|
|
|
|
|
|
+ //private val doctorFragment = "doctor_fragment"
|
|
//费用
|
|
//费用
|
|
private val costFragment = "cost_fragment"
|
|
private val costFragment = "cost_fragment"
|
|
//二维码
|
|
//二维码
|
|
private val qrCodeFragment = "qrcode_fragment"
|
|
private val qrCodeFragment = "qrcode_fragment"
|
|
//请求增援
|
|
//请求增援
|
|
- private val supportFragment = "support_fragment"
|
|
|
|
|
|
+ //private val supportFragment = "support_fragment"
|
|
//呼叫护工
|
|
//呼叫护工
|
|
- private val callCareFragment = "call_care_fragment"
|
|
|
|
|
|
+ //private val callCareFragment = "call_care_fragment"
|
|
//呼叫护士
|
|
//呼叫护士
|
|
- private val callNurseFragment = "call_nurse_fragment"
|
|
|
|
|
|
+ //private val callNurseFragment = "call_nurse_fragment"
|
|
|
|
|
|
companion object {
|
|
companion object {
|
|
private const val TIME_WHAT = 1000
|
|
private const val TIME_WHAT = 1000
|
|
@@ -91,9 +111,15 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
override fun init() {
|
|
override fun init() {
|
|
//开始ping网络,30秒ping一次
|
|
//开始ping网络,30秒ping一次
|
|
- NetHelper.startNetCheck()
|
|
|
|
|
|
+ //NetHelper.startNetCheck()
|
|
|
|
+
|
|
|
|
+ //获取mac地址
|
|
|
|
+ Constant.LOCAL_MAC = NetHelper.getInstance().macAddress
|
|
|
|
+
|
|
|
|
+ presenter.loadTcpServerHost()
|
|
|
|
+
|
|
//sip初始化
|
|
//sip初始化
|
|
- initSip()
|
|
|
|
|
|
+ //initSip()
|
|
//显示日期时间
|
|
//显示日期时间
|
|
updateDateTime()
|
|
updateDateTime()
|
|
//注册广播
|
|
//注册广播
|
|
@@ -104,6 +130,13 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
SoundPoolHelper.getInstance().init(applicationContext)
|
|
SoundPoolHelper.getInstance().init(applicationContext)
|
|
//打开手柄mic
|
|
//打开手柄mic
|
|
SerialPortHelper.setHandsMIC(true)
|
|
SerialPortHelper.setHandsMIC(true)
|
|
|
|
+
|
|
|
|
+ initCountDownTimer()
|
|
|
|
+ initNurseConfig()
|
|
|
|
+ updateNetState()
|
|
|
|
+
|
|
|
|
+ initDevice()
|
|
|
|
+
|
|
//启动时间线程
|
|
//启动时间线程
|
|
timeThread = TimeThread()
|
|
timeThread = TimeThread()
|
|
timeThread.start()
|
|
timeThread.start()
|
|
@@ -116,6 +149,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
}
|
|
}
|
|
|
|
|
|
override fun destory() {
|
|
override fun destory() {
|
|
|
|
+ countDownTimer.cancel()
|
|
SerialPortUtil.getInstance().closeHeart()
|
|
SerialPortUtil.getInstance().closeHeart()
|
|
SerialPortUtil.getInstance().closeSerialPort()
|
|
SerialPortUtil.getInstance().closeSerialPort()
|
|
SipHelper.getInstance().unRegisterSip()
|
|
SipHelper.getInstance().unRegisterSip()
|
|
@@ -125,21 +159,68 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
isTimeWorking = false
|
|
isTimeWorking = false
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ fun initDevice() {
|
|
|
|
+ if (!TextUtils.isEmpty(Constant.LOCAL_MAC)) {
|
|
|
|
+ presenter.loadDeviceInfo(Constant.LOCAL_MAC)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ fun initCountDownTimer() {
|
|
|
|
+ countDownTimer = object: CountDownTimer(Constant.CALL_TIMEOUT*1000L, 1000) {
|
|
|
|
+ override fun onTick(millisUntilFinished: Long) {
|
|
|
|
+ //
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun onFinish() {
|
|
|
|
+ //呼叫超时,返回到主界面
|
|
|
|
+ showMessage("无人应答...")
|
|
|
|
+ //MediaPlayHelper.getInstance().stopMusic()
|
|
|
|
+ VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
|
|
|
|
+ endCall()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private fun initNurseConfig() {
|
|
|
|
+ //初始化默认护理项
|
|
|
|
+ for (index in 1..5) {
|
|
|
|
+ var item = NurseConfigDto()
|
|
|
|
+ item.nurseConfigName = "护理"
|
|
|
|
+ item.nurseOptionName = "暂无"
|
|
|
|
+ item.nurseColorRbg = "2F9DF1"
|
|
|
|
+ configList.add(item)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ linearLayout = LinearLayoutManager(activity)
|
|
|
|
+ nurseConfigAdpter = NurseConfigAdpter(activity, configList)
|
|
|
|
+ rv_left_list.layoutManager = linearLayout
|
|
|
|
+ rv_left_list.adapter = nurseConfigAdpter
|
|
|
|
+ }
|
|
|
|
+
|
|
//数据加载错误
|
|
//数据加载错误
|
|
override fun onError(message: String, type: Int) {
|
|
override fun onError(message: String, type: Int) {
|
|
- dismissDialog()
|
|
|
|
|
|
+ //dismissDialog()
|
|
showMessage(message)
|
|
showMessage(message)
|
|
|
|
+ //加载失败,重置customid
|
|
|
|
+ Constant.CUSTOM_ID = -1
|
|
}
|
|
}
|
|
|
|
|
|
//数据加载完成
|
|
//数据加载完成
|
|
override fun complete(message: String, type: Int) {
|
|
override fun complete(message: String, type: Int) {
|
|
- dismissDialog()
|
|
|
|
|
|
+ //dismissDialog()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
//开始获取数据
|
|
//开始获取数据
|
|
override fun start() {
|
|
override fun start() {
|
|
- showDialog()
|
|
|
|
|
|
+ //showDialog()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //没有网络
|
|
|
|
+ override fun onNoNet() {
|
|
|
|
+ showMessage("没有网络")
|
|
|
|
+ //加载失败,重置customid
|
|
|
|
+ Constant.CUSTOM_ID = -1
|
|
}
|
|
}
|
|
|
|
|
|
//网络监听
|
|
//网络监听
|
|
@@ -153,11 +234,51 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
- //数据加载完成,显示数据
|
|
|
|
- override fun showData(customInfo: CustomerInfoVO) {
|
|
|
|
- //calling_data.setText(customInfo.named)
|
|
|
|
|
|
+ //显示设备信息
|
|
|
|
+ override fun showDeviceInfo(deviceInfo: BedDeviceInfoVO) {
|
|
|
|
+ Constant.SIP_ID = deviceInfo.sipId
|
|
|
|
+ Constant.DEVICE_ID = deviceInfo.id
|
|
|
|
+ Constant.PART_ID = deviceInfo.partId
|
|
|
|
+ Constant.BED_NAME = deviceInfo.fullName
|
|
|
|
+
|
|
|
|
+ view_title_layout_tv_hospital_name.text = deviceInfo.hospitalName + deviceInfo.partName
|
|
|
|
+ if (deviceInfo.customerId != null) {
|
|
|
|
+ Constant.CUSTOM_ID = deviceInfo.customerId
|
|
|
|
+ EventBus.getDefault().post(MessageEvent("updateCustom", Constant.EVENT_UPDATE_CUSTOM))
|
|
|
|
+ presenter.loadPartSettings(Constant.PART_ID)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //拿到sip账号之后再注册
|
|
|
|
+ if (!sipServiceRunning && !TextUtils.isEmpty(Constant.SIP_ID)) {
|
|
|
|
+ sipServiceRunning = true
|
|
|
|
+ //startSipService()
|
|
|
|
+ //StarRtcHelper.getInstance().initStarRtc()
|
|
|
|
+ initSip(Constant.SIP_HOST, Constant.SIP_ID);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun setPartSettings(partSetting: PartSettingDO) {
|
|
|
|
+ //Constant.CALL_TIMEOUT = partSetting.sipOvertime
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
|
|
|
|
+ Constant.TCP_SERVER_URL = tcpSeverDTO.localIp
|
|
|
|
+ Constant.TCP_PORT = tcpSeverDTO.tcpPort
|
|
|
|
+ Constant.TCP_HEART_BEAT = tcpSeverDTO.readerIdleTime
|
|
|
|
+
|
|
|
|
+ //开启TCP连接
|
|
|
|
+ startTcp()
|
|
|
|
+ showMessage("tcp开始连接...host: " + Constant.TCP_SERVER_URL + ", port: " + Constant.TCP_PORT)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun updateNurseConfig(list: List<NurseConfigDto>) {
|
|
|
|
+ if (list.size > 0) {
|
|
|
|
+ for ((index, e) in list.withIndex()) {
|
|
|
|
+ configList.set(index, e)
|
|
|
|
+ }
|
|
|
|
+ nurseConfigAdpter.updateData(configList)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
override fun onStart() {
|
|
override fun onStart() {
|
|
EventBus.getDefault().register(this)
|
|
EventBus.getDefault().register(this)
|
|
@@ -184,6 +305,13 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
switchToFragment(R.id.callingbed_main_frame, MainFragment(), mainFragment)
|
|
switchToFragment(R.id.callingbed_main_frame, MainFragment(), mainFragment)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //启动TCP连接
|
|
|
|
+ fun startTcp() {
|
|
|
|
+ if (Constant.TCP_SERVER_URL != null) {
|
|
|
|
+ Thread(Runnable { TcpClient.getInstance().init(Constant.TCP_SERVER_URL, Constant.TCP_PORT, Constant.TCP_HEART_BEAT) }).start()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
//设置串口监听
|
|
//设置串口监听
|
|
private fun setSerialListner() {
|
|
private fun setSerialListner() {
|
|
SerialPortUtil.getInstance().setOnDataReceiveListener(this)
|
|
SerialPortUtil.getInstance().setOnDataReceiveListener(this)
|
|
@@ -206,24 +334,24 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
unregisterReceiver(receiver)
|
|
unregisterReceiver(receiver)
|
|
}
|
|
}
|
|
|
|
|
|
- private fun initSip() {
|
|
|
|
|
|
+ private fun initSip(ipStr: String, id: String) {
|
|
//=============================================SIP启动服务===================================//
|
|
//=============================================SIP启动服务===================================//
|
|
- SipHelper.getInstance().initSip(this@CallingbedActivity,"192.168.101.1", getString(R.string.local_sip), getString(R.string.local_sip))
|
|
|
|
- SipHelper.getInstance().sipStartService()
|
|
|
|
- SipHelper.getInstance().setSipListner(this)
|
|
|
|
|
|
+ //SipHelper.getInstance().initSip(this@CallingbedActivity,ipStr, id, id)
|
|
|
|
+ //SipHelper.getInstance().sipStartService()
|
|
|
|
+ //SipHelper.getInstance().setSipListner(this)
|
|
}
|
|
}
|
|
|
|
|
|
- fun sendCall(sipId: String) {
|
|
|
|
|
|
+ fun sendSipCall(sipId: String) {
|
|
//showMessage("已呼叫...")
|
|
//showMessage("已呼叫...")
|
|
SipHelper.getInstance().startCall(sipId)
|
|
SipHelper.getInstance().startCall(sipId)
|
|
}
|
|
}
|
|
|
|
|
|
- fun endCall() {
|
|
|
|
|
|
+ fun endSipCall() {
|
|
//showMessage("已挂断...")
|
|
//showMessage("已挂断...")
|
|
SipHelper.getInstance().endCall()
|
|
SipHelper.getInstance().endCall()
|
|
}
|
|
}
|
|
|
|
|
|
- override fun onNewVvsipCallEvent(call: VvsipCall?) {
|
|
|
|
|
|
+ /*override fun onNewVvsipCallEvent(call: VvsipCall?) {
|
|
//Log.d("sip", "onNewVvsipCallEvent----")
|
|
//Log.d("sip", "onNewVvsipCallEvent----")
|
|
if (call != null) {
|
|
if (call != null) {
|
|
SipHelper.getInstance().addCallObject(call)
|
|
SipHelper.getInstance().addCallObject(call)
|
|
@@ -272,58 +400,58 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
switchToMainFragment()
|
|
switchToMainFragment()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
|
|
|
|
override fun serialPortBedOnclick(buffer: ByteArray) {
|
|
override fun serialPortBedOnclick(buffer: ByteArray) {
|
|
Log.d("serialPortBedOnclick", "buffer[0]:" + buffer[0] + ", buffer[1]:" + buffer[1] + ", buffer[2]:" + buffer[2]
|
|
Log.d("serialPortBedOnclick", "buffer[0]:" + buffer[0] + ", buffer[1]:" + buffer[1] + ", buffer[2]:" + buffer[2]
|
|
+ ", buffer[3]:" + buffer[3] + ", buffer[4]:" + buffer[4] + ", buffer[5]:" + buffer[5] + ", buffer[6]:" + buffer[6]
|
|
+ ", buffer[3]:" + buffer[3] + ", buffer[4]:" + buffer[4] + ", buffer[5]:" + buffer[5] + ", buffer[6]:" + buffer[6]
|
|
+ ", buffer[7]:" + buffer[7] + ", buffer[8]:" + buffer[8])
|
|
+ ", buffer[7]:" + buffer[7] + ", buffer[8]:" + buffer[8])
|
|
- //医嘱键短按或长按松开
|
|
|
|
|
|
+ //首页
|
|
if (buffer[0].toInt() == 1 || buffer[0].toInt() == 2) {
|
|
if (buffer[0].toInt() == 1 || buffer[0].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
- clickVDoctor()
|
|
|
|
|
|
+ clickVHome()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //费用查询键短按或长按松开
|
|
|
|
|
|
+ //费用
|
|
else if (buffer[1].toInt() == 1 || buffer[1].toInt() == 2) {
|
|
else if (buffer[1].toInt() == 1 || buffer[1].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
clickVCost()
|
|
clickVCost()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //二维码键短按或长按松开
|
|
|
|
|
|
+ //更多
|
|
else if (buffer[2].toInt() == 1 || buffer[2].toInt() == 2) {
|
|
else if (buffer[2].toInt() == 1 || buffer[2].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
clickVQrcode()
|
|
clickVQrcode()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //请求增援键短按或长按松开
|
|
|
|
|
|
+ //增援
|
|
else if (buffer[3].toInt() == 1 || buffer[3].toInt() == 2) {
|
|
else if (buffer[3].toInt() == 1 || buffer[3].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
clickVSupport()
|
|
clickVSupport()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- //呼叫护工键短按或长按松开
|
|
|
|
|
|
+ //呼叫
|
|
else if (buffer[4].toInt() == 1 || buffer[4].toInt() == 2) {
|
|
else if (buffer[4].toInt() == 1 || buffer[4].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
- clickVCallCare()
|
|
|
|
|
|
+ clickVCall()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//呼叫护士键短按或长按松开
|
|
//呼叫护士键短按或长按松开
|
|
else if (buffer[5].toInt() == 1 || buffer[5].toInt() == 2) {
|
|
else if (buffer[5].toInt() == 1 || buffer[5].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
- clickVCallNurse()
|
|
|
|
|
|
+ clickCall()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//手柄呼叫键短按或长按松开
|
|
//手柄呼叫键短按或长按松开
|
|
else if (buffer[6].toInt() == 1 || buffer[6].toInt() == 2) {
|
|
else if (buffer[6].toInt() == 1 || buffer[6].toInt() == 2) {
|
|
runOnUiThread {
|
|
runOnUiThread {
|
|
- clickVCallNurse()
|
|
|
|
|
|
+ clickCall()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -336,27 +464,21 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
return v.visibility == View.VISIBLE
|
|
return v.visibility == View.VISIBLE
|
|
}
|
|
}
|
|
|
|
|
|
- private fun clickVDoctor() {
|
|
|
|
|
|
+ private fun clickVHome() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前是医嘱界面则返回到主信息界面
|
|
|
|
- if (doctorFragment.equals(curFragment)) {
|
|
|
|
- switchToMainFragment()
|
|
|
|
|
|
+ if (mainFragment.equals(curFragment)) {
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ } else {
|
|
|
|
+ showRightMenu()
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面且右侧菜单已经弹出则显示医嘱界面,否则弹出右侧菜单
|
|
|
|
- if (isVisible(right_menu)) {
|
|
|
|
- hideRightMenu(true)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, DoctorOrderFragment(), doctorFragment)
|
|
|
|
- } else {
|
|
|
|
- showRightMenu()
|
|
|
|
- }
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ switchToMainFragment()
|
|
} else {
|
|
} else {
|
|
- if (!supportFragment.equals(curFragment) && !callCareFragment.equals(curFragment) && !callNurseFragment.equals(curFragment)) {
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, DoctorOrderFragment(), doctorFragment)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
|
|
+ showRightMenu()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -364,24 +486,18 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
private fun clickVCost() {
|
|
private fun clickVCost() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前是费用查询界面则返回到主信息界面
|
|
|
|
if (costFragment.equals(curFragment)) {
|
|
if (costFragment.equals(curFragment)) {
|
|
- switchToMainFragment()
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ } else {
|
|
|
|
+ showRightMenu()
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面且右侧菜单已经弹出则显示费用界面,否则弹出右侧菜单
|
|
|
|
- if (isVisible(right_menu)) {
|
|
|
|
- hideRightMenu(true)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CostFragment(), costFragment)
|
|
|
|
- } else {
|
|
|
|
- showRightMenu()
|
|
|
|
- }
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ switchToFragment(R.id.callingbed_main_frame, CostFragment(), costFragment)
|
|
} else {
|
|
} else {
|
|
- if (!supportFragment.equals(curFragment) && !callCareFragment.equals(curFragment) && !callNurseFragment.equals(curFragment)) {
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CostFragment(), costFragment)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
|
|
+ showRightMenu()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -389,24 +505,18 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
private fun clickVQrcode() {
|
|
private fun clickVQrcode() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前是二维码界面则返回到主信息界面
|
|
|
|
if (qrCodeFragment.equals(curFragment)) {
|
|
if (qrCodeFragment.equals(curFragment)) {
|
|
- switchToMainFragment()
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ } else {
|
|
|
|
+ showRightMenu()
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面且右侧菜单已经弹出则显示二维码界面,否则弹出右侧菜单
|
|
|
|
- if (isVisible(right_menu)) {
|
|
|
|
- hideRightMenu(true)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, QrCodeFragment(), qrCodeFragment)
|
|
|
|
- } else {
|
|
|
|
- showRightMenu()
|
|
|
|
- }
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ switchToFragment(R.id.callingbed_main_frame, QrCodeFragment(), qrCodeFragment)
|
|
} else {
|
|
} else {
|
|
- if (!supportFragment.equals(curFragment) && !callCareFragment.equals(curFragment) && !callNurseFragment.equals(curFragment)) {
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, QrCodeFragment(), qrCodeFragment)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
|
|
+ showRightMenu()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -414,79 +524,61 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
private fun clickVSupport() {
|
|
private fun clickVSupport() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前正在请求增援则取消
|
|
|
|
- if (supportFragment.equals(curFragment)) {
|
|
|
|
- switchToMainFragment()
|
|
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ showMessage("增援请求已发送!")
|
|
|
|
+ //switchToFragment(R.id.callingbed_main_frame, SupportFragment(), supportFragment)
|
|
|
|
+ //SoundPoolHelper.getInstance().playSound(2)
|
|
} else {
|
|
} else {
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面且右侧菜单已弹出则显示请求增援界面,否则弹出右侧菜单
|
|
|
|
- if (isVisible(right_menu)) {
|
|
|
|
- hideRightMenu(true)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, SupportFragment(), supportFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- showRightMenu()
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (!callCareFragment.equals(curFragment) && !callNurseFragment.equals(curFragment)) {
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, SupportFragment(), supportFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ showRightMenu()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private fun clickVCallCare() {
|
|
|
|
|
|
+ private fun clickVCall() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前正在呼叫护工则取消
|
|
|
|
- if (callCareFragment.equals(curFragment)) {
|
|
|
|
- switchToMainFragment()
|
|
|
|
- } else {
|
|
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面且右侧菜单已弹出则显示呼叫护工界面,否则弹出右侧菜单
|
|
|
|
- if (isVisible(right_menu)) {
|
|
|
|
- hideRightMenu(true)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CallCareFragment(), callCareFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- showRightMenu()
|
|
|
|
- }
|
|
|
|
|
|
+ //当前为待机状态,显示呼叫
|
|
|
|
+ if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ VoiceUtil.startAudioCall(Constant.DEVICE_ID)
|
|
|
|
+ sendCall()
|
|
|
|
+ //播放铃音
|
|
|
|
+ //MediaPlayHelper.getInstance().playResMusic(R.raw.ringback, 1.0f, true)
|
|
|
|
+ SoundPoolHelper.getInstance().playSound(2)
|
|
} else {
|
|
} else {
|
|
- if (!supportFragment.equals(curFragment) && !callNurseFragment.equals(curFragment)) {
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CallCareFragment(), callCareFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
|
|
+ showRightMenu()
|
|
}
|
|
}
|
|
|
|
+ } else if (Constant.CALL_STATE == Constant.CALL_CALLING) {
|
|
|
|
+ //StarRtcHelper.getInstance().hangupAudioCall()
|
|
|
|
+ //VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, fromId, interactionId)
|
|
|
|
+ endCall()
|
|
|
|
+ } else {
|
|
|
|
+ VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
|
|
|
|
+ endCall()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private fun clickVCallNurse() {
|
|
|
|
|
|
+ private fun clickCall() {
|
|
//重置超时时间
|
|
//重置超时时间
|
|
backTimeout = 0
|
|
backTimeout = 0
|
|
- //如果当前正在呼叫护士或在通话中则取消呼叫或通话
|
|
|
|
- if (callNurseFragment.equals(curFragment)) {
|
|
|
|
|
|
+ //当前为待机状态,显示呼叫
|
|
|
|
+ if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
|
|
|
|
+ if (isVisible(right_menu)) {
|
|
|
|
+ hideRightMenu(true)
|
|
|
|
+ }
|
|
|
|
+ VoiceUtil.startAudioCall(Constant.DEVICE_ID)
|
|
|
|
+ sendCall()
|
|
|
|
+ //播放铃音
|
|
|
|
+ //MediaPlayHelper.getInstance().playResMusic(R.raw.ringback, 1.0f, true)
|
|
|
|
+ SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
+ } else if (Constant.CALL_STATE == Constant.CALL_CALLING) {
|
|
|
|
+ //StarRtcHelper.getInstance().hangupAudioCall()
|
|
|
|
+ //VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, fromId, interactionId)
|
|
endCall()
|
|
endCall()
|
|
- switchToMainFragment()
|
|
|
|
} else {
|
|
} else {
|
|
- if (mainFragment.equals(curFragment)) {
|
|
|
|
- //如果当前是主信息界面则显示呼叫护士界面
|
|
|
|
- hideRightMenu(false)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CallNurseFragment(), callNurseFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- if (!supportFragment.equals(curFragment) && !callCareFragment.equals(curFragment)) {
|
|
|
|
- hideRightMenu(false)
|
|
|
|
- switchToFragment(R.id.callingbed_main_frame, CallNurseFragment(), callNurseFragment)
|
|
|
|
- SoundPoolHelper.getInstance().playSound(2)
|
|
|
|
- } else {
|
|
|
|
- showMessage("请先取消当前呼叫!")
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
|
|
|
|
+ endCall()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -511,7 +603,36 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
right_menu.setVisibility(View.GONE)
|
|
right_menu.setVisibility(View.GONE)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //发起呼叫
|
|
|
|
+ private fun sendCall() {
|
|
|
|
+ Constant.CALL_STATE = Constant.CALL_OUTGOING
|
|
|
|
+ ll_call_view.visibility = View.VISIBLE
|
|
|
|
+ tv_call_bed_name.text = Constant.BED_NAME
|
|
|
|
+ tv_call_state.text = "正在呼叫..."
|
|
|
|
+ voice_call_timer_view.visibility = View.INVISIBLE
|
|
|
|
+ countDownTimer.start()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //呼叫或通话结束
|
|
|
|
+ private fun endCall() {
|
|
|
|
+ voice_call_timer_view.base = SystemClock.elapsedRealtime()
|
|
|
|
+ voice_call_timer_view.stop()
|
|
|
|
+ ll_call_view.visibility = View.GONE
|
|
|
|
+ Constant.CALL_STATE = Constant.CALL_STANDBY
|
|
|
|
+ countDownTimer.cancel()
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ //通话中
|
|
|
|
+ private fun inCall() {
|
|
|
|
+ ll_call_view.visibility = View.VISIBLE
|
|
|
|
+ tv_call_bed_name.text = Constant.BED_NAME
|
|
|
|
+ tv_call_state.text = "通话中..."
|
|
|
|
+ voice_call_timer_view.visibility = View.VISIBLE
|
|
|
|
+ voice_call_timer_view.base = SystemClock.elapsedRealtime()
|
|
|
|
+ voice_call_timer_view.start()
|
|
|
|
+ Constant.CALL_STATE = Constant.CALL_CALLING
|
|
|
|
+ countDownTimer.cancel()
|
|
|
|
+ }
|
|
|
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
fun onMoonEvent(messageEvent: MessageEvent) {
|
|
fun onMoonEvent(messageEvent: MessageEvent) {
|
|
@@ -566,12 +687,33 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
view_title_layout_tv_time.setText(TimeHandle.getDateTime("yyyy-MM-dd HH:mm E"));
|
|
view_title_layout_tv_time.setText(TimeHandle.getDateTime("yyyy-MM-dd HH:mm E"));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private fun updateNetState() {
|
|
|
|
+ if (NetHelper.getInstance().networkType == ConnectivityManager.TYPE_WIFI) {
|
|
|
|
+ view_title_layout_iv_wifi.visibility = View.VISIBLE
|
|
|
|
+ view_title_layout_iv_wifi.setImageResource(R.mipmap.ic_wifi_success)
|
|
|
|
+ view_title_layout_iv_ethernet.visibility = View.GONE
|
|
|
|
+ } else if (NetHelper.getInstance().networkType == ConnectivityManager.TYPE_ETHERNET) {
|
|
|
|
+ view_title_layout_iv_ethernet.visibility = View.VISIBLE
|
|
|
|
+ view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_success)
|
|
|
|
+ view_title_layout_iv_wifi.visibility = View.GONE
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (NetHelper.isBTConnected()) {
|
|
|
|
+ view_title_layout_iv_bt.visibility = View.VISIBLE
|
|
|
|
+ view_title_layout_iv_bt.setImageResource(R.mipmap.ic_bt_success)
|
|
|
|
+ } else {
|
|
|
|
+ view_title_layout_iv_bt.visibility = View.GONE
|
|
|
|
+ }
|
|
|
|
+ view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_daylight)
|
|
|
|
+ }
|
|
|
|
+
|
|
inner class TimeReceiver: BroadcastReceiver() {
|
|
inner class TimeReceiver: BroadcastReceiver() {
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
if (intent.action == Intent.ACTION_TIME_TICK
|
|
if (intent.action == Intent.ACTION_TIME_TICK
|
|
|| intent.action == Intent.ACTION_TIME_CHANGED
|
|
|| intent.action == Intent.ACTION_TIME_CHANGED
|
|
|| intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
|
|
|| intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
|
|
updateDateTime()
|
|
updateDateTime()
|
|
|
|
+ updateNetState()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -604,7 +746,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
override fun handleMessage(msg: Message) {
|
|
override fun handleMessage(msg: Message) {
|
|
super.handleMessage(msg)
|
|
super.handleMessage(msg)
|
|
- // 通过 软引用 看能否得到activity示例
|
|
|
|
|
|
+ // 通过软引用看能否得到activity示例
|
|
val handlerMemoryActivity = weakReference.get()
|
|
val handlerMemoryActivity = weakReference.get()
|
|
// 防止内存泄露
|
|
// 防止内存泄露
|
|
if (handlerMemoryActivity != null) {
|
|
if (handlerMemoryActivity != null) {
|
|
@@ -622,8 +764,8 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
fun backToMain() {
|
|
fun backToMain() {
|
|
backTimeout++
|
|
backTimeout++
|
|
if (backTimeout >= Constant.CALL_TIMEOUT) {
|
|
if (backTimeout >= Constant.CALL_TIMEOUT) {
|
|
- //医嘱、费用、二维码界面超时返回主界面
|
|
|
|
- if (doctorFragment.equals(curFragment) || costFragment.equals(curFragment) || qrCodeFragment.equals(curFragment)) {
|
|
|
|
|
|
+ //费用、二维码界面超时返回主界面
|
|
|
|
+ if (costFragment.equals(curFragment) || qrCodeFragment.equals(curFragment)) {
|
|
switchToMainFragment()
|
|
switchToMainFragment()
|
|
}
|
|
}
|
|
//超时隐藏右侧菜单栏
|
|
//超时隐藏右侧菜单栏
|