Browse Source

<播放广播时同一房间如果有分机在通话则压低其他分机的广播音量>

weizhengliang 4 năm trước cách đây
mục cha
commit
6776980c04

+ 26 - 0
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -1685,6 +1685,21 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             flickerStatus = setWSHLightFlicker(serialPortUtil, false);
                         }
                         break;
+                    case "call_status": //分机通话状态
+                        if (MediaPlayerManger.getInstance().isPlay()) {
+                            if (udpEntity.getNurseHostID().equals(initDataEntity.getDeviceHostingID())
+                                && udpEntity.getRoomNumber().equals(initDataEntity.getDeviceRoomNum())
+                                && !udpEntity.getBedNumber().equals(initDataEntity.getDeviceBedNum())) {
+                                if (udpEntity.getLevel().equals("1")) {
+                                    //同房间有通话,降低广播音量
+                                    downBroadcastVolume();
+                                } else {
+                                    //通话已经结束,恢复广播音量
+                                    resumeBroadcastVolume();
+                                }
+                            }
+                        }
+                        break;
                 }
                 break;
             case Constants.EVENT_NOTICE:
@@ -2189,6 +2204,12 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
     }
 
+    private void downBroadcastVolume() {
+        if (MediaPlayerManger.getInstance().isPlay()) {
+            MediaPlayerManger.getInstance().setVolume(0.3f);
+        }
+    }
+
     private void resumeBroadcastVolume() {
         if (MediaPlayerManger.getInstance().isPlay()) {
             float voice = Float.parseFloat(SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice"));
@@ -2367,6 +2388,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
                 //通话中广播静音
                 muteBroadcastVolume();
+                //通知其他分机,若是同一个房间且在播放广播则降低广播音量
+                UdpSendUtil.sendCallStatus(initDataEntity, "1");
 
                 /*if (CALL_STATUS.equals(Constants.STANDBY)) {
                     //主机主动呼叫分机
@@ -2413,6 +2436,9 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
                 Constants.IS_CALLED = 0;
 
+                //通知其他分机通话已结束
+                UdpSendUtil.sendCallStatus(initDataEntity, "0");
+
                 CallingBedActivity.initPlayerVolume(1.0f);
                 CALL_STATUS = Constants.STANDBY;
                 showThisView(vMain);

+ 15 - 0
app/src/main/java/com/wdkl/callingbed/util/AnalysisUdpUtil.java

@@ -228,6 +228,21 @@ public class AnalysisUdpUtil {
                         call_host_exception.setName(data[9]);
                         EventBus.getDefault().post(new MessageEvent(call_host_exception, Constants.EVENT_UDP));
                         break;
+                    case "call_status": //分机通话状态
+                        UdpEntity call_status = new UdpEntity();
+                        call_status.setIndexes(data[0]);
+                        call_status.setNurseHostID(data[1]);
+                        call_status.setDoorwayMachineID(data[2]);
+                        call_status.setHeadMachineID(data[3]);
+                        call_status.setSipAddress(data[4]);
+                        call_status.setRoomNumber(data[5]);
+                        call_status.setBedNumber(data[6]);
+                        call_status.setLevel(data[7]);
+                        call_status.setType(data[8]);
+                        call_status.setName(data[9]);
+                        call_status.setDeviceMAC(data[10]);
+                        EventBus.getDefault().post(new MessageEvent(call_status, Constants.EVENT_UDP));
+                        break;
                     case "back_1":
                         //呼叫回复");
                         break;

+ 18 - 0
app/src/main/java/com/wdkl/callingbed/util/UdpSendUtil.java

@@ -189,4 +189,22 @@ public class UdpSendUtil {
                 , udpEntity.getDeviceMAC());
     }
 
+    /**
+     * 自己接听成功通知外面
+     *
+     */
+    public static void sendCallStatus(InitDataEntity initDataEntity, String status) {
+        if (null == initDataEntity) return;
+        AnalysisUdpUtil.sendAndroidUdpData("call_status"
+                , initDataEntity.getDeviceHostingID()
+                , initDataEntity.getDeviceRoomId()
+                , initDataEntity.getId()
+                , initDataEntity.getDeviceSipId()
+                , initDataEntity.getDeviceRoomNum()
+                , initDataEntity.getDeviceBedNum()
+                , status
+                , ""
+                , ""
+                , "0");
+    }
 }