Browse Source

<增加夜晚息屏功能>

weizhengliang 4 years ago
parent
commit
ba0c35d2b9

+ 112 - 7
app/src/main/java/com/wdkl/callingbed2/ui/CallingBedActivity.java

@@ -402,6 +402,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     RecyclerView rvSettings;
     @Bind(R.id.tv_version)
     TextView tvVersion;
+    @Bind(R.id.rl_black_view)
+    View blackView;
 
     private ImageView ivWelcome;
     private MyTextView tvMessage;
@@ -434,6 +436,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
      */
     private long callTimeOut = (StringUtils.parseInt(Constants.CALLINGTIMEOUT) == 0 ? 180000 : StringUtils.parseInt(Constants.CALLINGTIMEOUT) * 1000);//默认30秒
 
+    private long screenTimeOut = 15;
+
     //触摸移动坐标
     float downX;
     float downY;
@@ -452,6 +456,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private final int MAIN_DATA_RESPONSE = 2003;
     private final int MAIN_DATA_ERROR = 2004;
     private final int UPDATE_BROADCAST = 2005;
+    private final int TURN_OFF_SCREEN = 2007;
     private MyHandler handler = new MyHandler(this);
 
     class MyHandler extends Handler {
@@ -492,11 +497,11 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         break;
                     case INIT_SYSTEM:
                         LogUtil.d("NURSELIGHT", "INIT_SYSTEM");
-                        setSYSParameter();
+                        setSYSParameter(false);
                         break;
                     case SYSTEM_DATA_RESPONSE:
                         LogUtil.d("NURSELIGHT", "SYSTEM_DATA_RESPONSE");
-                        setSYSParameter();
+                        setSYSParameter(false);
                         break;
                     case SYSTEM_DATA_ERROR:
                         LogUtil.d("NURSELIGHT", "SYSTEM_DATA_ERROR");
@@ -504,7 +509,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         break;
                     case MAIN_DATA_RESPONSE:
                         LogUtil.d("NURSELIGHT", "MAIN_DATA_RESPONSE");
-                        setSYSParameter();
+                        setSYSParameter(false);
                         break;
                     case MAIN_DATA_ERROR:
                         LogUtil.d("NURSELIGHT", "MAIN_DATA_ERROR");
@@ -513,6 +518,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     case UPDATE_BROADCAST:
                         checkAndDownloadMP3(0);
                         break;
+                    //息屏
+                    case TURN_OFF_SCREEN:
+                        showBlackView();
+                        break;
                 }
             } else {
                 // 没有实例不进行操作
@@ -700,6 +709,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         ivWelcome = vWelcome.findViewById(R.id.view_welcome_iv_main);
         tvMessage = vMain.findViewById(R.id.activity_calling_bed_layout_tv_message);
         /*******************************************************/
+        blackView.setVisibility(View.GONE);
 
         timeThread = new TimeThread();
         timeThread.start();
@@ -1086,8 +1096,9 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                     Constants.SCREENEXTINGUISHTIME = object.getString("screenExtinguishTime");
                                     //Constants.DOORCALLVOICE = object.getString("DoorSipVol");
                                     Constants.BEDCALLVOICE = object.getString("BedSipVol");
+                                    screenTimeOut = Integer.parseInt(Constants.SCREENEXTINGUISHTIME);
                                     handler.sendEmptyMessage(SYSTEM_DATA_RESPONSE);
-                                    setSYSParameter();
+                                    //setSYSParameter();
                                 }
                             } catch (Exception e) {
                                 e.printStackTrace();
@@ -1549,6 +1560,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==1");
+                            wakeUpScreen();
                             callNurse();
                             tvNurseTimeOut.setText("");
                             //呼叫超时倒计时开启
@@ -1567,6 +1579,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "挂断键==1,2");
+                            wakeUpScreen();
                             endCallNurse();
                             tvNurseTimeOut.setText("");
                             //呼叫超时倒计时开启
@@ -1580,6 +1593,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==-2");
+                            wakeUpScreen();
                             tvNurseTimeOut.setText("");
                             //呼叫超时倒计时开启
                             callTypeCallNurse = "2";
@@ -1598,6 +1612,22 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     }
 
+    private void resetOffScreen() {
+        //LogUtil.d("wzlll", "resetOffScreen");
+        handler.removeMessages(TURN_OFF_SCREEN);
+        if (StringUtils.notEmpty(Constants.MORNING_NIGTH) && Constants.MORNING_NIGTH.equals("1")
+                && (Constants.SCREENLIGHT.equals("1") || Constants.SCREENLIGHT.equals("0"))) {//晚上
+            handler.sendEmptyMessageDelayed(TURN_OFF_SCREEN, screenTimeOut*1000);
+        }
+    }
+
+    private void wakeUpScreen() {
+        if (blackView.getVisibility() == View.VISIBLE) {
+            blackView.setVisibility(View.GONE);
+            showThisView(vMain);
+        }
+    }
+
     //---------------------------------------------串口点击事件监听----------------------------------------------------------
 
     private long localMillsCallNurse = 0;//呼叫护士拨打的时刻
@@ -1680,6 +1710,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                     CALL_STATUS = STANDBY;
                                     showThisView(vMain);
                                     setCallStatus(serialPortUtil, "0");
+                                    resetOffScreen();
                                 }
                             } else {
                                 flickerStatus = setWSHLightFlicker(serialPortUtil, false);
@@ -1715,6 +1746,23 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             setDoorLight(serialPortUtil, "111");//白色
                         }
                         break;
+                    case "call_host_exception":
+                        if (Constants.CALLMAIN_ID.equals(udpEntity.getNurseHostID())) {
+                            Constants.IS_CALLED = 0;
+                            callNurse = false;
+                            if (!CALL_STATUS.equals(STANDBY)) {
+                                CALL_STATUS = STANDBY;
+                                UdpSendUtil.sendHangUp(initDataEntity, mainDataEntity);//取消呼叫 add by waderson 20191118
+                                SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().endCall();
+                                setCallStatus(serialPortUtil, "0");
+                                CALL_STATUS = STANDBY;
+                                showThisView(vMain);
+                                goneLlRightView(true);
+                                resetOffScreen();
+                            }
+                            flickerStatus = setWSHLightFlicker(serialPortUtil, false);
+                        }
+                        break;
                 }
                 break;
             case Constants.EVENT_NOTICE:
@@ -1730,7 +1778,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 }
                 break;
             case Constants.EVENT_SETSYS://系统设置参数
-                setSYSParameter();
+                setSYSParameter(true);
                 break;
             case Constants.EVENT_MGR_PATIENTUPDATE://数据改变刷新本机
                 upDateParameter();
@@ -1958,14 +2006,35 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     /**
      * 设置系统的各项参数,根据后台UDP的指令改变机器的状态(声音大小;亮度;。。。)<br></>
      */
-    private void setSYSParameter() {
+    private void setSYSParameter(boolean fromUdp) {
         if (StringUtils.notEmpty(Constants.MORNING_NIGTH)) {//初始化卫生间按键灯
             flickerStatus = setWSHLightFlicker(serialPortUtil, flickerStatus);
         }
         if (StringUtils.notEmpty(Constants.MORNING_NIGTH) && Constants.MORNING_NIGTH.equals("1")) {//晚上
             lightStatus = setWSHLight(serialPortUtil, true);
+
+            if (Constants.SCREENLIGHT.equals("1") || Constants.SCREENLIGHT.equals("0")) {
+                if (!isVisible(vNurse) && !isVisible(vSupport) && !isVisible(vCall)) {//排除呼叫状态
+                    if (fromUdp) {
+                        showBlackView();
+                    } else {
+                        handler.sendEmptyMessageDelayed(TURN_OFF_SCREEN, screenTimeOut*1000);
+                    }
+                }
+            } else {
+                handler.removeMessages(TURN_OFF_SCREEN);
+                if (isVisible(blackView)) {
+                    blackView.setVisibility(View.GONE);
+                    showThisView(vMain);
+                }
+            }
         } else {
             lightStatus = setWSHLight(serialPortUtil, false);
+            handler.removeMessages(TURN_OFF_SCREEN);
+            if (isVisible(blackView)) {
+                blackView.setVisibility(View.GONE);
+                showThisView(vMain);
+            }
         }
         if (StringUtils.isInt(Constants.SCREENLIGHT)) {
             setSYSBrightness(CallingBedActivity.this, StringUtils.parseInt(Constants.SCREENLIGHT));
@@ -2135,6 +2204,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             if (null != initDataEntity) {
                 jbVSupport = setJumpingBeans(tvSupportText, initDataEntity.getDeviceBedNum() + "床正在请求增援...");
             }
+            handler.removeMessages(TURN_OFF_SCREEN);
         } else {
             if (!isVisible(vCall) && !isVisible(vNurse)) {//排除呼叫状态
                 showThisView(vSupport);
@@ -2146,6 +2216,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 if (null != initDataEntity) {
                     jbVSupport = setJumpingBeans(tvSupportText, initDataEntity.getDeviceBedNum() + "床正在请求增援...");
                 }
+                handler.removeMessages(TURN_OFF_SCREEN);
             } else {
                 showToast("请先取消呼叫!");
             }
@@ -2167,6 +2238,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             if (null != initDataEntity) {
                 jbVCall = setJumpingBeans(tvCallText, initDataEntity.getDeviceBedNum() + "床正在呼叫护工...");
             }
+            handler.removeMessages(TURN_OFF_SCREEN);
         } else {
             if (!isVisible(vSupport) && !isVisible(vNurse)) {//排除呼叫状态
                 showThisView(vCall);
@@ -2177,6 +2249,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 if (null != initDataEntity) {
                     jbVCall = setJumpingBeans(tvCallText, initDataEntity.getDeviceBedNum() + "床正在呼叫护工...");
                 }
+                handler.removeMessages(TURN_OFF_SCREEN);
             } else {
                 showToast("请先取消呼叫!");
             }
@@ -2249,7 +2322,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             if (null != initDataEntity) {
                 jbVNurse = setJumpingBeans(tvNurseText, initDataEntity.getDeviceBedNum() + "床已呼叫,等待护士接听中...");
             }
-
+            handler.removeMessages(TURN_OFF_SCREEN);
         } else {
             if (!isVisible(vSupport) && !isVisible(vCall)) {//排除呼叫状态
                 callNurse = true;
@@ -2262,6 +2335,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 if (null != initDataEntity) {
                     jbVNurse = setJumpingBeans(tvNurseText, initDataEntity.getDeviceBedNum() + "床已呼叫,等待护士接听中...");
                 }
+                handler.removeMessages(TURN_OFF_SCREEN);
             } else {
                 showToast("请先取消呼叫!");
             }
@@ -2278,6 +2352,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             showThisView(vMain);
             goneLlRightView(true);
         }
+        resetOffScreen();
     }
 
     //---------------------------------------------串口点击事件部分(下)---------------------------------------------------------------------
@@ -2329,6 +2404,26 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
     }
 
+    private void showBlackView() {
+        //LogUtil.d("wzlll", "showBlackView");
+        if (blackView.getVisibility() == View.VISIBLE) return;
+        if (allViews == null) return;
+        for (View v : allViews) {
+            if (v.getVisibility() == View.VISIBLE) {
+                v.setVisibility(View.GONE);
+            }
+        }
+        blackView.setVisibility(View.VISIBLE);
+        blackView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //LogUtil.d("wzlll", "black view click");
+                wakeUpScreen();
+                resetOffScreen();
+            }
+        });
+    }
+
     protected boolean isVisible(View v) {
         return v.getVisibility() == View.VISIBLE;
     }
@@ -2400,6 +2495,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     @Override
     public void onClick(View v) {
+        resetOffScreen();
         switch (v.getId()) {
             case R.id.right_ll_main_item:
                 clickVMain();
@@ -2520,6 +2616,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         switch (call.mState) {
             case 0://正在呼叫中:子机自动接通 isIncomingCall() = true  mState = 0  //正在通话中:isIncomingCall() = true
                 CALL_STATUS = Constants.IN_CALL;
+
+                //通话唤醒
+                if (isVisible(blackView)) {
+                    blackView.setVisibility(View.GONE);
+                    showThisView(vMain);
+                    handler.removeMessages(TURN_OFF_SCREEN);
+                }
+
                 //=============================================SIP自动接听===================================//
                 SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
 
@@ -2567,6 +2671,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     //发送udp让门口机text变白色
                     UdpSendUtil.sendCallNoticeDoor(initDataEntity, mainDataEntity, "0");
                 }
+                resetOffScreen();
                 break;
         }
     }

+ 7 - 0
app/src/main/res/layout/activity_calling_bed_layout.xml

@@ -257,4 +257,11 @@
                 android:textStyle="bold" />
         </LinearLayout>
     </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/rl_black_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/black"
+        android:visibility="gone"/>
 </RelativeLayout>