Browse Source

合并修改

weizhengliang 3 years ago
parent
commit
70ceec8d53

+ 1 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -703,6 +703,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     || intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
                 updateNetState()
                 updateSettings(false)
+                updateTcpState()
 
                 if (SocketManager.getInstance().userState == 1) {
                     view_title_layout_tv_point.setBackgroundResource(R.color.green)

+ 12 - 4
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/SkyCallFragment.kt

@@ -129,15 +129,23 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
     private fun startOutgoing() {
         if (callState == 0) {
             VoiceUtil.startAudioCall(Constant.DEVICE_ID)
+            Constant.CALL_STATE = Constant.CALL_OUTGOING
+            sky_voice_call_timeout.visibility = View.VISIBLE
+            sky_voice_call_timer.visibility = View.GONE
+            startTimer()
         } else if (callState == 2) {
             if (bedId != -1) {
                 VoiceUtil.startAudioCallBed(Constant.DEVICE_ID, bedId)
+                Constant.CALL_STATE = Constant.CALL_OUTGOING
+                sky_voice_call_timeout.visibility = View.VISIBLE
+                sky_voice_call_timer.visibility = View.GONE
+                startTimer()
+            } else {
+                showMessage("bedId为空,呼叫失败")
+                Constant.CALL_STATE = Constant.CALL_STANDBY
+                backToMain()
             }
         }
-        Constant.CALL_STATE = Constant.CALL_OUTGOING
-        sky_voice_call_timeout.visibility = View.VISIBLE
-        sky_voice_call_timer.visibility = View.GONE
-        startTimer()
     }
 
     //去电界面

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -52,9 +52,9 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     @Override
     public void channelInactive(ChannelHandlerContext ctx) throws Exception {
         super.channelInactive(ctx);
-        EventBus.getDefault().post(new MessageEvent(0, Constant.EVENT_TCP_STATE));
         connected = false;
         Constant.TCP_CONNECTED = false;
+        EventBus.getDefault().post(new MessageEvent(0, Constant.EVENT_TCP_STATE));
         Log.i(TAG, "失去连接");
         TcpClient.getInstance().doConnect();
         //reConnect(ctx);

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

@@ -92,6 +92,7 @@ public class DeviceChannel {
             case BROADCAST:
             case SOS:
             case SIDE:
+            case ENTRACEGUARD:
                 EventBus.getDefault().post(new MessageEvent(tcpModel, EVENT_TCP_MSG));
                 break;
         }

+ 94 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/EntraceGuardUtil.java

@@ -0,0 +1,94 @@
+package com.wdkl.ncs.android.middleware.tcp.channel;
+
+import android.util.Log;
+
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO;
+import com.wdkl.ncs.android.middleware.tcp.TcpClient;
+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 org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class EntraceGuardUtil {
+
+    public static void acceptStranger(TcpModel tcpModel) {
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.ACCEPT);
+        tcpModel.setFromId(tcpModel.getToId());
+        tcpModel.setToId(tcpModel.getFromId());
+        Log.i("tcpmodel",tcpModel.toJson());
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    public static void startStranger(Integer fromId) {
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.STRANGER);
+        tcpModel.setFromId(fromId);
+        Log.i("tcpmodel",tcpModel.toJson());
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+
+    public static void rejectStranger(TcpModel tcpModel){
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.REJECT);
+        tcpModel.setFromId(tcpModel.getToId());
+        tcpModel.setToId(tcpModel.getFromId());
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    public static void rejectStranger(InteractionVO interactionVO){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.REJECT);
+        tcpModel.setFromId(interactionVO.getToDeviceId());
+        tcpModel.setToId(interactionVO.getFromDeviceId());
+        tcpModel.setData(interactionVO);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    public static TcpModel unlockDoor(InteractionVO interactionVO){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.UNLOCKDOOR);
+        tcpModel.setFromId(interactionVO.getToDeviceId());
+        tcpModel.setToId(interactionVO.getFromDeviceId());
+        tcpModel.setData(interactionVO);
+        return tcpModel;
+    }
+
+
+    public static TcpModel lockDoor(@Nullable InteractionVO interactionVO) {
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.LOCKDOOR);
+        tcpModel.setFromId(interactionVO.getToDeviceId());
+        tcpModel.setToId(interactionVO.getFromDeviceId());
+        tcpModel.setData(interactionVO);
+        return tcpModel;
+
+    }
+
+    public static  TcpModel toggleAudio(InteractionVO interactionVO,Boolean mute){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(mute?TcpAction.EntraceGuardAction.CLOSESPEAKER:TcpAction.EntraceGuardAction.OPENSPEAKER);
+        tcpModel.setFromId(interactionVO.getToDeviceId());
+        tcpModel.setToId(interactionVO.getFromDeviceId());
+        tcpModel.setData(interactionVO);
+        return tcpModel;
+    }
+
+    public static TcpModel hangup(InteractionVO interactionVO){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.ENTRACEGUARD);
+        tcpModel.setAction(TcpAction.EntraceGuardAction.HANGUP);
+        tcpModel.setFromId(interactionVO.getToDeviceId());
+        tcpModel.setToId(interactionVO.getFromDeviceId());
+        tcpModel.setData(interactionVO);
+        return tcpModel;
+    }
+}

+ 106 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/VideoUtil.java

@@ -0,0 +1,106 @@
+package com.wdkl.ncs.android.middleware.tcp.channel;
+
+import com.wdkl.ncs.android.middleware.tcp.TcpClient;
+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 java.util.HashMap;
+import java.util.Map;
+
+public class VideoUtil {
+
+    public static TcpModel videoCalling(Integer fromId, Integer toId, Integer interactionId){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.CALLING);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        tcpModel.setData(interactionId);
+        return tcpModel;
+    }
+
+    public static TcpModel videoInCall(Integer fromId, Integer toId, Integer interactionId){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.VIDEO_IN_CALL);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        tcpModel.setData(interactionId);
+        return tcpModel;
+    }
+
+    public static TcpModel videoReject(Integer fromId, Integer toId,Integer interactionId){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.REJECT);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        tcpModel.setData(interactionId);
+        return tcpModel;
+    }
+
+    public static TcpModel videoAccept(Integer fromId, Integer toId,Integer interactionId){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.ACCEPT);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        tcpModel.setData(interactionId);
+        return tcpModel;
+    }
+
+    public static TcpModel videoInvite(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.VIDEO_INVITE_JOIN);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        Map map = new HashMap();
+        map.put("interactionId", interactionId);
+        map.put("roomId", interactionId.toString());
+        tcpModel.setData(map);
+        return tcpModel;
+    }
+
+    public static TcpModel videoHandoff(Integer fromId, Integer toId, Integer interactionId){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VIDEO);
+        tcpModel.setAction(TcpAction.VideoAction.HANDOFF);
+        tcpModel.setFromId(fromId);
+        tcpModel.setToId(toId);
+        tcpModel.setData(interactionId);
+        return tcpModel;
+    }
+
+
+
+    public static void sendVideoInCall(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = videoInCall(fromId, toId, interactionId);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    //拒绝视频
+    public static void rejectVideoCall(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = videoReject(fromId, toId, interactionId);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    //接受视频
+    public static void acceptVideoCall(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = videoAccept(fromId, toId, interactionId);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    //发送视频探视邀请
+    public static void sendInviteVideoCall(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = videoInvite(fromId, toId, interactionId);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
+    //挂断视频
+    public static void handoffVideoCall(Integer fromId, Integer toId, Integer interactionId) {
+        TcpModel tcpModel = videoHandoff(fromId, toId, interactionId);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+}

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

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

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

@@ -350,4 +350,42 @@ public interface TcpAction {
             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;
+        }
+    }
 }

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

@@ -17,6 +17,7 @@ public enum TcpType {
     DEVICE("设备"),
     DATA("数据"),
     BROADCAST("广播"),
+    ENTRACEGUARD("门禁"),
     TIME("时间");
 
     private String description;