Sfoglia il codice sorgente

<增加夜晚息屏功能,用黑色背景代替,需要在电脑端护士管理软件上设置,当时间为晚上且亮度设置为1时生效>

weizhengliang 4 anni fa
parent
commit
e639371e83

+ 65 - 2
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -376,6 +376,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     MarqueeText tvBedNum_big;
     @Bind(R.id.view_main_layout_tv_name_big)
     MarqueeText tvName_big;
+    @Bind(R.id.rl_black_view)
+    View blackView;
 
     private RelativeLayout rlBottomMessage;
     private ImageView ivWelcome;
@@ -409,6 +411,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
      */
     private long callTimeOut = (StringUtils.parseInt(Constants.CALLINGTIMEOUT) == 0 ? 30000 : StringUtils.parseInt(Constants.CALLINGTIMEOUT) * 1000);//默认30秒
 
+    private long screenTimeOut = 15000;
 
     /**
      * 时间线程
@@ -422,6 +425,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private final int MAIN_DATA_ERROR = 2004;
     private final int UPDATE_BROADCAST = 2005;
     private final int NEW_INCOMING_CALL = 2006;
+    private final int TURN_OFF_SCREEN = 2007;
     private MyHandler handler = new MyHandler(this);
 
     class MyHandler extends Handler {
@@ -485,6 +489,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     case NEW_INCOMING_CALL:
                         //newCalling();
                         break;
+                    //息屏
+                    case TURN_OFF_SCREEN:
+                        showBlackView();
+                        break;
                 }
             } else {
                 // 没有实例不进行操作
@@ -587,6 +595,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         ivWelcome = vWelcome.findViewById(R.id.view_welcome_iv_main);
         tvNoticeContent = vMain.findViewById(R.id.view_main_layout_tv_msg);
         /*******************************************************/
+        blackView.setVisibility(View.GONE);
 
         timeThread = new TimeThread();
         timeThread.start();
@@ -1373,6 +1382,17 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         if (null != vWelcome) {
             //只有在欢迎界面没有显示的时候串口才能用
             if (vWelcome.getVisibility() == View.GONE) {
+                //按键唤醒
+                if (blackView.getVisibility() == View.VISIBLE) {
+                    CallingBedActivity.this.runOnUiThread(new Runnable() {
+                        public void run() {
+                            blackView.setVisibility(View.GONE);
+                            showThisView(vMain);
+                        }
+                    });
+                }
+                resetOffScreen();
+
                 //医嘱键短按松开
                 if (buffer[0] == 1) {
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
@@ -1548,6 +1568,13 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
     }
 
+    private void resetOffScreen() {
+        handler.removeMessages(TURN_OFF_SCREEN);
+        if (StringUtils.notEmpty(Constants.MORNING_NIGTH) && Constants.MORNING_NIGTH.equals("1") && Constants.SCREENLIGHT.equals("1")) {//晚上
+            handler.sendEmptyMessageDelayed(TURN_OFF_SCREEN, screenTimeOut);
+        }
+    }
+
     @Override
     public void serialPortBedOnclickString(String str) {
         //LogUtil.d("serialPortBedOnclickString", "CallingBedActivity: " + str);
@@ -1634,6 +1661,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                 if (!CALL_STATUS.equals(STANDBY)) {
                                     CALL_STATUS = STANDBY;
                                     showThisView(vMain);
+                                    resetOffScreen();
                                 }
                             } else {
                                 flickerStatus = setWSHLightFlicker(serialPortUtil, false);
@@ -1675,6 +1703,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             if (!CALL_STATUS.equals(STANDBY)) {
                                 CALL_STATUS = STANDBY;
                                 showThisView(vMain);
+                                resetOffScreen();
                                 SipHelperUtil.getInstance(this).getmSipCallBackI().endCall();
                             }
                             flickerStatus = setWSHLightFlicker(serialPortUtil, false);
@@ -1929,8 +1958,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
         if (StringUtils.notEmpty(Constants.MORNING_NIGTH) && Constants.MORNING_NIGTH.equals("1")) {//晚上
             lightStatus = setWSHLight(serialPortUtil, true);
+            if (Constants.SCREENLIGHT.equals("1") && !isVisible(vNurse) && !isVisible(vSupport) && !isVisible(vCall)) {//排除呼叫状态
+                showBlackView();
+            }
         } else {
             lightStatus = setWSHLight(serialPortUtil, false);
+            if (Constants.SCREENLIGHT.equals("1") && isVisible(blackView)) {
+                showThisView(vMain);
+            }
         }
         if (StringUtils.isInt(Constants.SCREENLIGHT)) {
             setSYSBrightness(CallingBedActivity.this, StringUtils.parseInt(Constants.SCREENLIGHT));
@@ -2050,6 +2085,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         timeOfBackMainPage = 0;
         timeOut = callTimeOutBack;
         if (isVisible(vSupport)) {
+            resetOffScreen();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
             goneLlRightView(true);
@@ -2066,6 +2102,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     if (null != initDataEntity) {
                         jbVSupport = setJumpingBeans(tvSupportText, initDataEntity.getDeviceBedNum() + "床正在请求增援...");
                     }
+                    handler.removeMessages(TURN_OFF_SCREEN);
                 } else {
                     showLlRightView();
                 }
@@ -2079,6 +2116,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     if (null != initDataEntity) {
                         jbVSupport = setJumpingBeans(tvSupportText, initDataEntity.getDeviceBedNum() + "床正在请求增援...");
                     }
+                    handler.removeMessages(TURN_OFF_SCREEN);
                 } else {
                     showToast("请先取消呼叫!");
                 }
@@ -2091,6 +2129,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         timeOfBackMainPage = 0;
         timeOut = callTimeOutBack;
         if (isVisible(vCall)) {
+            resetOffScreen();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
             goneLlRightView(true);
@@ -2106,6 +2145,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     if (null != initDataEntity) {
                         jbVCall = setJumpingBeans(tvCallText, initDataEntity.getDeviceBedNum() + "床正在呼叫护工...");
                     }
+                    handler.removeMessages(TURN_OFF_SCREEN);
                 } else {
                     showLlRightView();
                 }
@@ -2118,6 +2158,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     if (null != initDataEntity) {
                         jbVCall = setJumpingBeans(tvCallText, initDataEntity.getDeviceBedNum() + "床正在呼叫护工...");
                     }
+                    handler.removeMessages(TURN_OFF_SCREEN);
                 } else {
                     showToast("请先取消呼叫!");
                 }
@@ -2132,13 +2173,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         vMain_big.setVisibility(View.GONE);//显示增长页面20191017
         timeOfBackMainPage = 0;
         timeOut = callTimeOutBack;
+        goneLlRightView(false);
         if (isVisible(vNurse)) {
+            resetOffScreen();
             callNurse = false;
             UdpSendUtil.sendHangUp(initDataEntity, mainDataEntity);//取消呼叫 add by waderson 20191118
             SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().endCall();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
-            goneLlRightView(true);
         } else {
             if (isVisible(vMain)) {
                 callNurse = true;
@@ -2150,7 +2192,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;
@@ -2162,6 +2204,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     if (null != initDataEntity) {
                         jbVNurse = setJumpingBeans(tvNurseText, initDataEntity.getDeviceBedNum() + "床已呼叫,等待护士接听中...");
                     }
+                    handler.removeMessages(TURN_OFF_SCREEN);
                 } else {
                     showToast("请先取消呼叫!");
                 }
@@ -2216,6 +2259,17 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
     }
 
+    private void 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);
+    }
+
     protected boolean isVisible(View v) {
         return v.getVisibility() == View.VISIBLE;
     }
@@ -2337,6 +2391,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
+
+                //通话唤醒
+                if (isVisible(blackView)) {
+                    blackView.setVisibility(View.GONE);
+                    showThisView(vMain);
+                    handler.removeMessages(TURN_OFF_SCREEN);
+                }
+
                 /*if (CALL_STATUS.equals(Constants.STANDBY)) {
                     //主机主动呼叫分机
                     CALL_STATUS = Constants.IN_CALLING;
@@ -2397,6 +2459,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     //发送udp让门口机text变白色
                     UdpSendUtil.sendCallNoticeDoor(initDataEntity, mainDataEntity, "0");
                 }
+                resetOffScreen();
                 break;
         }
     }

+ 40 - 0
app/src/main/java/com/wdkl/callingbed/util/ScreenManagerUtil.java

@@ -6,8 +6,12 @@ package com.wdkl.callingbed.util;
 
 import android.content.Context;
 import android.net.Uri;
+import android.os.PowerManager;
+import android.os.SystemClock;
 import android.provider.Settings;
 
+import java.lang.reflect.InvocationTargetException;
+
 /**
  * Created by asus on 2016/12/8.
  * 屏幕亮度调节器
@@ -76,4 +80,40 @@ public class ScreenManagerUtil {
         LogUtil.w("当前亮度", "当前亮度======" + getScreenBrightness(context));
         context.getContentResolver().notifyChange(uri, null);
     }
+
+    /**
+     * 关闭屏幕 ,其实是使系统休眠
+     */
+    public static void goToSleep(Context context) {
+        PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        try {
+            powerManager.getClass().getMethod("goToSleep", new Class[]{long.class}).invoke(powerManager, SystemClock.uptimeMillis());
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (InvocationTargetException e) {
+            e.printStackTrace();
+        } catch (NoSuchMethodException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 唤醒屏幕
+     *
+     * @param context
+     */
+    public static void wakeUp(Context context) {
+        PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        try {
+            powerManager.getClass().getMethod("wakeUp", new Class[]{long.class}).invoke(powerManager, SystemClock.uptimeMillis());
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (InvocationTargetException e) {
+            e.printStackTrace();
+        } catch (NoSuchMethodException e) {
+            e.printStackTrace();
+        }
+
+    }
 }

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

@@ -197,4 +197,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>