Bladeren bron

修改分机接收语音留言无播报问题,修改事件响应后无播报问题

weizhengliang 1 jaar geleden
bovenliggende
commit
56a6c5ee5f

+ 38 - 2
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -49,10 +49,13 @@ import com.wdkl.app.ncs.callingdoor.fragment.NurseFragment
 import com.wdkl.app.ncs.callingdoor.fragment.YhFragment
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.base.BaseApplication
+import com.wdkl.ncs.android.lib.netdetection.ui.NetDetectActivity
 import com.wdkl.ncs.android.lib.utils.*
 import com.wdkl.ncs.android.lib.utils.TimeHandle.convertTimeToMilliseconds
 import com.wdkl.ncs.android.lib.vo.filter
 import com.wdkl.ncs.android.lib.widget.MenuDialog
+import com.wdkl.ncs.android.middleware.api.ApiManager
+import com.wdkl.ncs.android.middleware.api.UrlManager
 import com.wdkl.ncs.android.middleware.common.Constant
 import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.common.SipStatus
@@ -67,9 +70,11 @@ import com.wdkl.ncs.android.middleware.model.dos.RoleDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
 import com.wdkl.ncs.android.middleware.model.vo.*
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
+import com.wdkl.ncs.android.middleware.tcp.channel.ImUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.VideoUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
+import com.wdkl.ncs.android.middleware.tcp.dto.TcpCallback
 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
@@ -142,6 +147,9 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
     private var clickSosTime : Long = 0
     private var clickCallTime : Long = 0
 
+    //已响应事件的Id
+    private var responsed = TreeSet<Int>()
+
     //网络异常计数
     private var netErrCount : Int = 0
 
@@ -698,7 +706,6 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                     if (Constant.DEVICE_ID != -1) {
                         OtherUtil.sendReinforce(Constant.DEVICE_ID)
                         ReinforcementsDialogHelper.showDialog(activity, true)
-//                        WidgetsUtil.showToastWithImage(getString(R.string.support_sent), 200f)
                         SoundPoolManager.getInstance().playSound(4, 1.0f, 1.0f, 0)
                     } else {
                         showMessage("null device id!")
@@ -1673,10 +1680,39 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                                 Log.d("setTime", "set sys time2: $timeStr, $timeZone")
                             }
                         }
+                    } else if (tcpModel.action == TcpAction.DataAction.INTERACTION
+                        || tcpModel.action == TcpAction.EventAction.RESPONSE
+                        || tcpModel.action == TcpAction.CallbackAction.SUCCESS
+
+                    ) {
+                        if (tcpModel.action == TcpAction.EventAction.RESPONSE && tcpModel.type.equals(TcpType.EVENT)) { //事件响应,语音播报已响应
+                            val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                            if (!responsed.contains(interactionVO.id)) { //已响应过的事件不在播报
+                                val speakStr = (interactionVO.actionEndMemberName ?: "") + "已响应" + interactionVO.data + "//请稍候"
+                                SpeechUtil.getInstance().stopSpeak()
+                                SpeechUtil.getInstance().speak(speakStr)
+                                responsed.add(interactionVO.id)
+                            }
+                        }
+                    } else if (tcpModel.action == TcpAction.IMAction.MSG) {
+                        if (Constant.CALL_STATE != Constant.CALL_STANDBY) {
+                            showMessage("通话中,无法播放留言。")
+                            return
+                        }
+
+                        MediaPlayHelper.getInstance().stopMusic()
+                        val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                        MediaPlayHelper.getInstance().playUrlMusic(UrlManager.build().base + "/" + interactionVO.data.toString(), 1.0f, false)
+                        showMessage("新的语音留言")
+
+                        if (interactionVO.actionEnd == null) {
+                            val tcpModelRead = ImUtil.imRead(Constant.DEVICE_ID, interactionVO.fromDeviceId, interactionVO.id)
+                            TcpClient.getInstance().sendTcp(tcpModelRead, false, null)
+                        }
                     }
 
                     //探视
-                    if (tcpModel.type == TcpType.VIDEO) {
+                    else if (tcpModel.type == TcpType.VIDEO) {
                         Util.wakeUpAndUnlock()
                         if (tcpModel.action == TcpAction.VideoAction.VIDEO_INVITE_JOIN) {
                             val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)

+ 4 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -95,9 +95,11 @@ public class DeviceChannel {
                 break;
             case IM:
                 if (tcpModel.getAction()==TcpAction.IMAction.MSG){
-                    //todo: 从接口重新获取左侧数据;使用通话中界面,显示有语音留言,停留3秒,结束至正常界面
+                    //分机收到留言直接播放
+                    EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
+                    responseTcpModel = ImUtil.imReceived(tcpModel);
+                    return responseTcpModel;
                 } else if (tcpModel.getAction()==TcpAction.IMAction.MSG_READ){ //语音已读取
-                    //todo: 从data得到语音id;更新左侧,注意这里不使用通话中界面提示已读
                     EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
                 }
                 break;