Browse Source

<分机呼叫或通话时广播静音>

weizhengliang 4 years ago
parent
commit
cc793f8448

+ 43 - 10
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -1362,14 +1362,15 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
 
         //病人需要休息按任意键关闭广播
-        for (int i = 0; i < buffer.length; i++) {
+        //改成长按呼叫键关闭广播
+        /*for (int i = 0; i < buffer.length; i++) {
             if (buffer[i] == 1 || buffer[i] == 2) {
                 if (anyKeyCloseBroadcast()) {
                     isCloseBroadcast = false;
                     break;
                 }
             }
-        }
+        }*/
         if (null != vWelcome) {
             //只有在欢迎界面没有显示的时候串口才能用
             if (vWelcome.getVisibility() == View.GONE) {
@@ -1487,7 +1488,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         }
                     });
                 } else if (buffer[5] == 2) {//呼叫护士键长按松开
-                    CallingBedActivity.this.runOnUiThread(new Runnable() {
+                    //关闭广播
+                    anyKeyCloseBroadcast();
+
+                    /*CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             if (Constants.IS_CALLED == 0) {//当前没有呼叫长按后还是呼叫
                                 long curTimeMills = System.currentTimeMillis();
@@ -1505,7 +1509,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             }
 
                         }
-                    });
+                    });*/
                 } else if (buffer[5] == -1) {//按键常态
                     LogUtil.d("WWW", "呼叫护士键==-1");
                 }
@@ -1600,7 +1604,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 UdpEntity udpEntity = (UdpEntity) messageEvent.getMessage();
                 switch (udpEntity.getIndexes()) {
                     case "call_1": //子机呼叫护士主机
-                        showSnackbarPrompt(udpEntity.getBedNumber() + "床呼叫!");
+                        //showSnackbarPrompt(udpEntity.getBedNumber() + "床呼叫!");
                         callNoticeEntity = udpEntity;
                         //适配无门口机但是有门灯的情况,门灯直接接到其中一个床位分机,房间内任何一个分机呼叫都需要点亮门灯
                         if (serialPortUtil != null && initDataEntity != null && initDataEntity.getDeviceRoomNum().equals(udpEntity.getRoomNumber())) {
@@ -1608,18 +1612,18 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         }
                         break;
                     case "call_2"://卫生间呼叫护士主机
-                        showSnackbarPrompt(udpEntity.getRoomNumber() + "房卫生间紧急呼叫!");
+                        //showSnackbarPrompt(udpEntity.getRoomNumber() + "房卫生间紧急呼叫!");
                         callNoticeEntity = udpEntity;
                         if (serialPortUtil != null && initDataEntity != null && initDataEntity.getDeviceRoomNum().equals(udpEntity.getRoomNumber())) {
                             setDoorLight(serialPortUtil, "200");//门灯红色闪烁
                         }
                         break;
                     case "call_4"://增援呼叫护士主机
-                        showSnackbarPrompt(udpEntity.getBedNumber() + "床请求增援!");
+                        //showSnackbarPrompt(udpEntity.getBedNumber() + "床请求增援!");
                         callNoticeEntity = udpEntity;
                         break;
                     case "call_6": //门口机呼叫护士主机
-                        showSnackbarPrompt(udpEntity.getRoomNumber() + "房门口机呼叫!");
+                        //showSnackbarPrompt(udpEntity.getRoomNumber() + "房门口机呼叫!");
                         callNoticeEntity = udpEntity;
                         break;
                     case "call_8_upremove"://主机通知对应的子机改变自己的UI
@@ -1634,6 +1638,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                 if (!CALL_STATUS.equals(STANDBY)) {
                                     CALL_STATUS = STANDBY;
                                     showThisView(vMain);
+                                    resumeBroadcastVolume();
                                 }
                             } else {
                                 flickerStatus = setWSHLightFlicker(serialPortUtil, false);
@@ -2052,6 +2057,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         if (isVisible(vSupport)) {
             CALL_STATUS = STANDBY;
             showThisView(vMain);
+            resumeBroadcastVolume();
             goneLlRightView(true);
         } else {
             if (isVisible(vMain)) {
@@ -2061,6 +2067,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     goneLlRightView(true);
                     setDoorLight(serialPortUtil, "200");//门灯红色闪烁  add by waderson 20191119 后来加的门灯控制
                     UdpSendUtil.sendCall4(initDataEntity, mainDataEntity);
+                    muteBroadcastVolume();
                     SoundPoolManager.getInstance().playSound(2);
                     CALL_STATUS = Constants.SUPPORT_IN_CALL;
                     if (null != initDataEntity) {
@@ -2074,6 +2081,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     showThisView(vSupport);
                     setDoorLight(serialPortUtil, "200");//门灯红色闪烁  add by waderson 20191119 后来加的门灯控制
                     UdpSendUtil.sendCall4(initDataEntity, mainDataEntity);
+                    muteBroadcastVolume();
                     SoundPoolManager.getInstance().playSound(2);
                     CALL_STATUS = Constants.SUPPORT_IN_CALL;
                     if (null != initDataEntity) {
@@ -2093,6 +2101,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         if (isVisible(vCall)) {
             CALL_STATUS = STANDBY;
             showThisView(vMain);
+            resumeBroadcastVolume();
             goneLlRightView(true);
         } else {
             if (isVisible(vMain)) {
@@ -2101,6 +2110,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     changeTextColor(tvCall);
                     goneLlRightView(true);
                     //sendProtectHelp();//呼叫护工还没有做;这个先预留
+                    muteBroadcastVolume();
                     SoundPoolManager.getInstance().playSound(2);
                     CALL_STATUS = Constants.WORK_IN_CALL;
                     if (null != initDataEntity) {
@@ -2113,6 +2123,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 if (!isVisible(vSupport) && !isVisible(vNurse)) {//排除呼叫状态
                     showThisView(vCall);
                     //sendProtectHelp();//呼叫护工还没有做;这个先预留
+                    muteBroadcastVolume();
                     SoundPoolManager.getInstance().playSound(2);
                     CALL_STATUS = Constants.WORK_IN_CALL;
                     if (null != initDataEntity) {
@@ -2138,6 +2149,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().endCall();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
+            resumeBroadcastVolume();
             goneLlRightView(true);
         } else {
             if (isVisible(vMain)) {
@@ -2145,6 +2157,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 showThisView(vNurse);
                 setDoorLight(serialPortUtil, "200");//门灯红色闪烁  add by waderson 20191119 后来加的门灯控制
                 UdpSendUtil.sendCall1(initDataEntity, mainDataEntity);
+                muteBroadcastVolume();
                 SoundPoolManager.getInstance().playSound(2);
                 CALL_STATUS = Constants.NURSE_IN_CALL;
                 if (null != initDataEntity) {
@@ -2157,6 +2170,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     showThisView(vNurse);
                     setDoorLight(serialPortUtil, "200");//门灯红色闪烁  add by waderson 20191119 后来加的门灯控制
                     UdpSendUtil.sendCall1(initDataEntity, mainDataEntity);
+                    muteBroadcastVolume();
                     SoundPoolManager.getInstance().playSound(2);
                     CALL_STATUS = Constants.NURSE_IN_CALL;
                     if (null != initDataEntity) {
@@ -2168,6 +2182,19 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             }
         }
     }
+
+    private void muteBroadcastVolume() {
+        if (MediaPlayerManger.getInstance().isPlay()) {
+            MediaPlayerManger.getInstance().setVolume(0);
+        }
+    }
+
+    private void resumeBroadcastVolume() {
+        if (MediaPlayerManger.getInstance().isPlay()) {
+            float voice = Float.parseFloat(SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice"));
+            MediaPlayerManger.getInstance().setVolume(voice);
+        }
+    }
     //---------------------------------------------串口点击事件部分(下)---------------------------------------------------------------------
     //---------------------------------------------UI更改操作部分(上)---------------------------------------------------------------------
 
@@ -2330,13 +2357,17 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         switch (call.mState) {
             case 0://正在呼叫中:子机自动接通 isIncomingCall() = true  mState = 0  //正在通话中:isIncomingCall() = true
                 //通话中关闭广播
-                try {
+                /*try {
                     MediaPlayerManger.getInstance().stopMediaPlayer();
                     tvBroadcasting.setText("");
                     tvBroadcasting.setVisibility(View.INVISIBLE);
                 } catch (Exception e) {
                     e.printStackTrace();
-                }
+                }*/
+
+                //通话中广播静音
+                muteBroadcastVolume();
+
                 /*if (CALL_STATUS.equals(Constants.STANDBY)) {
                     //主机主动呼叫分机
                     CALL_STATUS = Constants.IN_CALLING;
@@ -2385,6 +2416,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 CallingBedActivity.initPlayerVolume(1.0f);
                 CALL_STATUS = Constants.STANDBY;
                 showThisView(vMain);
+                resumeBroadcastVolume();
 
                 if (isTransfer) {
                     if (null != callNoticeEntity) {
@@ -2492,6 +2524,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
             CALL_STATUS = Constants.NURSE_CALL_TIMEOUT;
             showThisView(vMain);
+            resumeBroadcastVolume();
             goneLlRightView(false);
             tvSupportTimeOut.setText("");
             tvCallTextTimeOut.setText("");

+ 7 - 0
app/src/main/java/com/wdkl/callingbed/util/MediaPlayerManger.java

@@ -226,4 +226,11 @@ public class MediaPlayerManger {
             mediaPlayer.setVolume(volume, volume);
         }
     }
+
+    public boolean isPlay() {
+        if (mediaPlayer != null) {
+            return mediaPlayer.isPlaying();
+        }
+        return false;
+    }
 }