Browse Source

收到nursing action时结束掉当前呼叫或通话

weizhengliang 3 năm trước cách đây
mục cha
commit
0fc7c91c27

+ 17 - 0
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -957,6 +957,23 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                                 VoiceUtil.rejectAudioCall(Constant.DEVICE_ID, Constant.fromId, Constant.interactionId)
                                 VoiceUtil.rejectAudioCall(Constant.DEVICE_ID, Constant.fromId, Constant.interactionId)
                             }
                             }
                         }
                         }
+                    } else if (tcpModel.type == TcpType.SIDE) {
+                        if (tcpModel.action == TcpAction.SideAction.NURSING) {
+                            //如果该房间是在护理状态且当前有呼叫或通话则结束掉,此时该房间分机将当成临时主机接收呼叫
+                            if (Constant.CALL_STATE == Constant.CALL_CALLING) {
+                                //通话中挂断
+                                EventBus.getDefault().post(MessageEvent("handoff", Constant.EVENT_SERIAL_EVENT))
+                                Constant.CALL_STATE = Constant.CALL_STANDBY
+                            } else if (Constant.CALL_STATE == Constant.CALL_OUTGOING) {
+                                //呼叫取消
+                                EventBus.getDefault().post(MessageEvent("cancel", Constant.EVENT_SERIAL_EVENT))
+                                Constant.CALL_STATE = Constant.CALL_STANDBY
+                            } else if (Constant.CALL_STATE == Constant.CALL_INCOMING) {
+                                //来电拒绝
+                                EventBus.getDefault().post(MessageEvent("reject", Constant.EVENT_SERIAL_EVENT))
+                                Constant.CALL_STATE = Constant.CALL_STANDBY
+                            }
+                        }
                     } else if (tcpModel.type == TcpType.SOS) {
                     } else if (tcpModel.type == TcpType.SOS) {
                         if (tcpModel.action == TcpAction.SOSAction.CANCEL) {
                         if (tcpModel.action == TcpAction.SOSAction.CANCEL) {
                             //紧急呼叫已处理
                             //紧急呼叫已处理

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

@@ -96,12 +96,10 @@ public class DeviceChannel {
                 }
                 }
                 break;
                 break;
             case DEVICE:
             case DEVICE:
-                EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
-                break;
             case BROADCAST:
             case BROADCAST:
-                EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
-                break;
             case SOS:
             case SOS:
+            case SIDE:
+            case ENTRACEGUARD:
                 EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
                 EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
                 break;
                 break;
         }
         }

+ 6 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/TcpModel.java

@@ -133,6 +133,12 @@ public class TcpModel implements Serializable {
             case SOS:
             case SOS:
                 tcpAction = TcpAction.SOSAction.fromString(action);
                 tcpAction = TcpAction.SOSAction.fromString(action);
                 break;
                 break;
+            case SIDE:
+                tcpAction = TcpAction.SideAction.fromString(action);
+                break;
+            case ENTRACEGUARD:
+                tcpAction =TcpAction.EntraceGuardAction.fromString(action);
+                break;
         }
         }
 
 
         tcpModel.setType(tcpType);
         tcpModel.setType(tcpType);

+ 85 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/enums/TcpAction.java

@@ -43,13 +43,23 @@ public interface TcpAction {
     enum VoiceAction implements TcpAction {
     enum VoiceAction implements TcpAction {
         CALL("呼叫"),
         CALL("呼叫"),
         ACCEPT("接受呼叫"),
         ACCEPT("接受呼叫"),
+        ACCEPTED("已接听"),
         REJECT("拒绝"),
         REJECT("拒绝"),
         CALLING("通话中"),
         CALLING("通话中"),
         TRANSFER("转接"),
         TRANSFER("转接"),
         HANDOFF("挂断"),
         HANDOFF("挂断"),
         CANCEL("取消"),
         CANCEL("取消"),
+        RS485CALL("485界面发起呼叫"),
+        RS485CANCEL("485界面呼叫取消"),
+        RS485HANDOFF("485界面挂断"),
+        RS485ACCEPT("485界面接听"),
+        RS485REJECT("485界面拒绝"),
         SUCCESS("呼叫成功"),
         SUCCESS("呼叫成功"),
-        FAILED("呼叫失败");
+        FAILED("呼叫失败"),
+        GAIN_CALL("应答"),
+        GAIN_OK("应答成功"),
+        GAIN_FAIL("应答失败"),
+        GAINED("呼叫被应答");
 
 
 
 
         private String description;
         private String description;
@@ -237,6 +247,40 @@ public interface TcpAction {
         }
         }
     }
     }
 
 
+    enum SideAction implements TcpAction {
+        CALL("呼叫"),
+        ACCEPT("接听"),
+        CANCEL("结束"),
+        SOS_CALL("紧急呼叫"),
+        SOS_CANCEL("取消"),
+        NURSING("护理"),
+        NURSING_END("护理结束");
+        private String description;
+        SideAction(String description){
+            this.description = description;
+        }
+        public String getDescription() {
+            return description;
+        }
+
+        public String getName(){
+            return this.name();
+        }
+
+        private final static Map<String , SideAction> ENUM_MAP = new HashMap<String, SideAction>();
+        static {
+            for(SideAction v : values()) {
+                ENUM_MAP.put(v.toString() , v);
+            }
+        }
+        public static SideAction fromString(String v) {
+            SideAction userOptionEnum = ENUM_MAP.get(v);
+            return userOptionEnum == null ? CALL :userOptionEnum;
+        }
+    }
+
+
+
     enum DataAction implements TcpAction {
     enum DataAction implements TcpAction {
         REFRESH("刷新数据"),
         REFRESH("刷新数据"),
         INTERACTION("刷新交互列表");
         INTERACTION("刷新交互列表");
@@ -316,4 +360,44 @@ public interface TcpAction {
             return userOptionEnum == null ? SYNC :userOptionEnum;
             return userOptionEnum == null ? SYNC :userOptionEnum;
         }
         }
     }
     }
+
+    enum EntraceGuardAction implements TcpAction {
+        STRANGER("陌生访客"),
+        LOCKDOOR("锁门"),
+        UNLOCKDOOR("开门"),
+        ACCEPT("主机接受视频"),//通话空闲时自动接受
+        REJECT("拒绝"), // 通话忙时自动拒接
+        OPENSPEAKER("打开麦克风"),//护士主机打开麦克风,门禁机也打开,双方停止等待音乐,打开后可以通话,默认只有视频界面,没有声音
+        CLOSESPEAKER("关闭麦克风"),//关闭音频
+        SUCCESS("连接主机成功"),
+        HANGUP("挂断"),
+        TIMEOUT("响应超时"),
+        FAILED("连接失败");
+
+
+        private String description;
+
+        EntraceGuardAction(String description) {
+            this.description = description;
+        }
+        public String getDescription() {
+            return description;
+        }
+
+        public String getName(){
+            return this.name();
+        }
+
+        private final static Map<String , EntraceGuardAction> ENUM_MAP = new HashMap<String, EntraceGuardAction>();
+        static {
+            for(EntraceGuardAction v : values()) {
+                ENUM_MAP.put(v.toString() , v);
+            }
+        }
+        public static EntraceGuardAction fromString(String v) {
+            EntraceGuardAction userOptionEnum = ENUM_MAP.get(v);
+            return userOptionEnum;
+        }
+    }
+
 }
 }

+ 3 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/enums/TcpType.java

@@ -12,10 +12,12 @@ public enum TcpType {
     VIDEO("视频"),
     VIDEO("视频"),
     SOS("紧急呼叫"),
     SOS("紧急呼叫"),
     IM("留言"),
     IM("留言"),
+    EVENT("事件"),
+    SIDE("边外信息"),
     DEVICE("设备"),
     DEVICE("设备"),
     DATA("数据"),
     DATA("数据"),
-    EVENT("事件"),
     BROADCAST("广播"),
     BROADCAST("广播"),
+    ENTRACEGUARD("门禁"),
     TIME("时间");
     TIME("时间");
 
 
     private String description;
     private String description;