Przeglądaj źródła

优化紧急呼叫,兼容433按钮

weizhengliang 2 lat temu
rodzic
commit
60d31a4bdf

+ 14 - 2
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -24,6 +24,7 @@ import com.alibaba.fastjson.JSON
 import com.alibaba.fastjson.JSONObject
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
+import com.google.common.base.Strings
 import com.google.gson.Gson
 import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
@@ -58,6 +59,7 @@ import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
+import com.wdkl.ncs.android.middleware.tcp.enums.FrameTypeEnum
 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.CommonUtils
@@ -1337,8 +1339,18 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
                         }
                         //语音
                         if (SettingConfig.getTtsMode(activity) == SettingConfig.TTS_ON) {
-                            val text = BaseApplication.appContext.getString(R.string.sos_call_speech, sosName)
-                            SpeechUtil.getInstance().addSpeech(text, true)
+                            if (!Strings.isNullOrEmpty(interactionVO.data)) {
+                                var speakText = ""
+                                if (Locale.CHINESE.getLanguage().equals(language)) {
+                                    speakText = Util.appendSpace(interactionVO.data.replace("-", ""))
+                                } else {
+                                    speakText = interactionVO.data.replace("-", "")
+                                }
+                                SpeechUtil.getInstance().addSpeech(speakText,true)
+                            } else {
+                                val text = BaseApplication.appContext.getString(R.string.sos_call_speech, sosName)
+                                SpeechUtil.getInstance().addSpeech(text, true)
+                            }
                         } else {
                             RingPlayHelper.playRingTone(activity, R.raw.sos2, false)
                         }

+ 35 - 5
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/util/LedHelper.java

@@ -1,5 +1,8 @@
 package com.wdkl.ncs.android.component.nursehome.util;
 
+import android.util.Log;
+
+import com.google.common.base.Strings;
 import com.wdkl.ncs.android.component.nursehome.R;
 import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig;
 import com.wdkl.ncs.android.lib.base.BaseApplication;
@@ -15,6 +18,7 @@ public class LedHelper {
     public static void updateLedInfo(InteractionVO interactionVO, boolean isAdd, boolean emergency) {
         //没有点阵屏设备,直接返回
         if (!Constants.Companion.getLED_EXIST()) {
+            Log.e("led", "no led device.");
             return;
         }
 
@@ -31,6 +35,7 @@ public class LedHelper {
             return;
         }
 
+        Log.d("led", "update led info, deviceType: " + interactionVO.getFromDeviceType() + ", frameName: " + interactionVO.getFromFrameFullName() + ", data: " + interactionVO.getData());
         if (interactionVO.getFromDeviceType() == DeviceTypeEnum.DIGIT_BED_DEVICE.value()
                 || interactionVO.getFromDeviceType() == DeviceTypeEnum.SIMULATE_BED_DEVICE.value()) {
             //如果交互记录中的fromdevice是分机,有可能是数字分机发送过来的紧急呼叫,需要特别处理
@@ -56,20 +61,45 @@ public class LedHelper {
                 }
             }
         } else if (interactionVO.getFromDeviceType() == DeviceTypeEnum.EMERGENCY_BUTTON.value()
-                || interactionVO.getFromDeviceType() == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()
-                || interactionVO.getFromDeviceType() == DeviceTypeEnum.ALARM_BUTTON_SOS.value()) {
+                || interactionVO.getFromDeviceType() == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
             //紧急呼叫
             String frameName = CommonUtils.subStringBefore(interactionVO.getFromFrameFullName(), "-");
             if (SettingConfig.getSosCallNameOn(BaseApplication.appContext)) {
                 frameName = interactionVO.getFromDeviceName();
             }
-            String sosCall = BaseApplication.appContext.getString(R.string.led_show_emergency_call, frameName);
+
+            if (Strings.isNullOrEmpty(interactionVO.getData())) {
+                if (isAdd) {
+                    //新增led节目
+                    LedManagerUtils.getInstance().updateProgram(interactionVO.getData(), 1);
+                } else {
+                    //删除led节目
+                    LedManagerUtils.getInstance().updateProgram(interactionVO.getData(), 2);
+                }
+            } else {
+                if (isAdd) {
+                    //新增led节目
+                    LedManagerUtils.getInstance().updateProgram(BaseApplication.appContext.getString(R.string.led_show_emergency_call, frameName), 1);
+                } else {
+                    //删除led节目
+                    LedManagerUtils.getInstance().updateProgram(BaseApplication.appContext.getString(R.string.led_show_emergency_call, frameName), 2);
+                }
+            }
+        } else if (interactionVO.getFromDeviceType() == DeviceTypeEnum.ALARM_BUTTON_SOS.value()
+                || interactionVO.getFromDeviceType() == DeviceTypeEnum.ALARM_433BUTTON.value()) {
+            String frameName = CommonUtils.subStringBefore(interactionVO.getFromFrameFullName(), "-");
+            if (Strings.isNullOrEmpty(interactionVO.getData())) {
+                frameName = BaseApplication.appContext.getString(R.string.led_show_emergency_call, frameName);
+            } else {
+                frameName = interactionVO.getData();
+            }
+
             if (isAdd) {
                 //新增led节目
-                LedManagerUtils.getInstance().updateProgram(sosCall, 1);
+                LedManagerUtils.getInstance().updateProgram(frameName, 1);
             } else {
                 //删除led节目
-                LedManagerUtils.getInstance().updateProgram(sosCall, 2);
+                LedManagerUtils.getInstance().updateProgram(frameName, 2);
             }
         }
     }

+ 5 - 0
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/window/IncidentWindow.kt

@@ -30,7 +30,9 @@ import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 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.ncs.android.middleware.utils.StringUtil
+import org.greenrobot.eventbus.EventBus
 
 class IncidentWindow(var contexts: Context) {
     var mWindowManager: WindowManager? = null
@@ -143,6 +145,9 @@ class IncidentWindow(var contexts: Context) {
             } else {
                 release()
             }
+
+            //更新左侧列表
+            //EventBus.getDefault().post(MessageEvent(0, Constants.EVENT_REFRESH_CALL_LIST))
         }
 
     }

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

@@ -0,0 +1,63 @@
+package com.wdkl.ncs.android.middleware.tcp.enums;
+
+/**
+ * @author wuyunfeng
+ * 2021-05-12 11:05
+ * 空间结构类型枚举
+ */
+public enum FrameTypeEnum {
+
+    HOSPITAL(1, "医院"),
+    BUILDING(2, "楼栋"),
+    PART(3, "科室"),
+    ROOM(4, "病房"),
+    BED(5, "病床");
+    private final int value;
+    private final String typeName;
+
+    FrameTypeEnum(int value, String typeName) {
+        this.value = value;
+        this.typeName = typeName;
+    }
+
+    public int value() {
+        return this.value;
+    }
+
+    public String typeName() {
+        return this.typeName;
+    }
+
+    /**
+     * 通过value 转换成枚举
+     *
+     * @param value
+     * @return
+     */
+    public static FrameTypeEnum parse(int value) {
+        FrameTypeEnum[] values = FrameTypeEnum.values();
+        for (FrameTypeEnum frameTypeEnum : values) {
+            if (frameTypeEnum.value() == value) {
+                return frameTypeEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 通过typeName 转换成枚举
+     *
+     * @param typeName
+     * @return
+     */
+    public static FrameTypeEnum parse(String typeName) {
+        FrameTypeEnum[] values = FrameTypeEnum.values();
+        for (FrameTypeEnum value : values) {
+            if (value.typeName().equals(typeName)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}