Pārlūkot izejas kodu

<播放广播过程中有呼叫则静音,通话结束后恢复,长按面板呼叫键可以关闭广播>

weizhengliang 4 gadi atpakaļ
vecāks
revīzija
e55e711456

+ 8 - 1
app/build.gradle

@@ -21,6 +21,13 @@ android {
             keyAlias "wdkl_bed"
             keyPassword "111111"
         }
+
+        debugA40i {
+            storeFile file("keystore_a40i/keystore-a40i")
+            storePassword "jda40i6k8x7d"
+            keyAlias "jda40i"
+            keyPassword "jda40i6k8x7d"
+        }
     }
     // wuyq add for sign end
 
@@ -31,7 +38,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.59"
+        versionName "1.6"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

BIN
app/keystore_a40i/keystore-a40i


+ 80 - 33
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -1464,14 +1464,16 @@ 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 (!isEmptyInfo) {
             //只有在欢迎界面没有显示的时候串口才能用
             //if (vWelcome.getVisibility() == View.GONE) {
@@ -1583,34 +1585,43 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 }
                 if (buffer[5] == 0) { //呼叫护士键按住不动
                     LogUtil.d("WWW", "呼叫护士键==0");
+                    callPressTime = System.currentTimeMillis();
                 } else if (buffer[5] == 1) {//呼叫护士键短按松开
-                    CallingBedActivity.this.runOnUiThread(new Runnable() {
-                        public void run() {
-                            LogUtil.d("WWW", "呼叫护士键==1");
-                            if (CALL_STATUS.equals(Constants.IN_CALL)) {
-                                //主机呼叫分机,按键接听
-                                handsMICStatus = setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
-                                //=============================================SIP自动接听===================================//
-                                SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
-                                CALL_STATUS = Constants.IN_CALLING;
-                                tvNurseText.setText("正在通话中...");
-                                tvNurseTimeOut.setText("");
-                            } else {
-                                long curTimeMills = System.currentTimeMillis();
-                                if (curTimeMills - localMillsCallNurse > 3000) {
-                                    clickVNurse();
-                                    localMillsCallNurse = curTimeMills;
-                                    tvNurseTimeOut.setText("");
-                                    //呼叫超时倒计时开启
-                                    callTypeCallNurse = "1";
-                                    //handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                    if (System.currentTimeMillis() - callPressTime > 3000) {
+                        //关闭广播
+                        anyKeyCloseBroadcast();
+                    } else {
+                        CallingBedActivity.this.runOnUiThread(new Runnable() {
+                            public void run() {
+                                LogUtil.d("WWW", "呼叫护士键==1");
+                                if (CALL_STATUS.equals(Constants.IN_CALL)) {
+                                    //主机呼叫分机,按键接听
                                     handsMICStatus = setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
+                                    //=============================================SIP自动接听===================================//
+                                    SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
+                                    CALL_STATUS = Constants.IN_CALLING;
+                                    tvNurseText.setText("正在通话中...");
+                                    tvNurseTimeOut.setText("");
+                                } else {
+                                    long curTimeMills = System.currentTimeMillis();
+                                    if (curTimeMills - localMillsCallNurse > 3000) {
+                                        clickVNurse();
+                                        localMillsCallNurse = curTimeMills;
+                                        tvNurseTimeOut.setText("");
+                                        //呼叫超时倒计时开启
+                                        callTypeCallNurse = "1";
+                                        //handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                                        handsMICStatus = setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
+                                    }
                                 }
                             }
-                        }
-                    });
+                        });
+                    }
                 } else if (buffer[5] == 2) {//呼叫护士键长按松开
-                    CallingBedActivity.this.runOnUiThread(new Runnable() {
+                    //关闭广播
+                    anyKeyCloseBroadcast();
+
+                    /*CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==2");
                             if (CALL_STATUS.equals(Constants.IN_CALL)) {
@@ -1639,7 +1650,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             }
 
                         }
-                    });
+                    });*/
                 } else if (buffer[5] == -1) {//按键常态
                     LogUtil.d("WWW", "呼叫护士键==-1");
                 }
@@ -1705,6 +1716,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     //---------------------------------------------串口点击事件监听----------------------------------------------------------
 
+    private long callPressTime = 0; //面板呼叫按键按下的时间
     private long localMillsCallNurse = 0;//呼叫护士拨打的时刻
     private String callTypeCallNurse = "";//1:外部物理按键呼叫;2:手柄按钮呼叫
 
@@ -1751,7 +1763,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())) {
@@ -1759,18 +1771,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
@@ -1786,6 +1798,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                     CALL_STATUS = STANDBY;
                                     showThisView(vMain);
                                     resetOffScreen();
+                                    resumeBroadcastVolume();
                                 }
                             } else {
                                 flickerStatus = setWSHLightFlicker(serialPortUtil, false);
@@ -1873,6 +1886,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             if (isDownloadMp3) {
                                 ToastUtil.showToast("广播文件正在下载中,请稍等...");
                             } else {
+                                //重新下载广播文件
+                                needReDownload = true;
                                 getBroadcastAudioFiles();
                             }
                         }
@@ -1964,7 +1979,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                     }
                                 }
                                 tvBroadcasting.setVisibility(View.VISIBLE);
-                                tvBroadcasting.setText("======广播中======");
+                                tvBroadcasting.setText("==广播中:" + bcStr + "==");
                             } catch (Exception e) {
                                 e.printStackTrace();
                             }
@@ -2255,6 +2270,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             CALL_STATUS = STANDBY;
             showThisView(vMain);
             goneLlRightView(true);
+            resumeBroadcastVolume();
         } else {
             if (isVisible(vMain)) {
                 if (isVisible(llRight)) {
@@ -2263,6 +2279,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) {
@@ -2277,6 +2294,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) {
@@ -2298,6 +2316,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             resetOffScreen();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
+            resumeBroadcastVolume();
             goneLlRightView(true);
         } else {
             if (isVisible(vMain)) {
@@ -2306,6 +2325,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) {
@@ -2319,6 +2339,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) {
@@ -2347,12 +2368,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().endCall();
             CALL_STATUS = STANDBY;
             showThisView(vMain);
+            resumeBroadcastVolume();
         } else {
             if (isVisible(vMain)) {
                 callNurse = true;
                 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) {
@@ -2365,6 +2388,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) {
@@ -2377,6 +2401,24 @@ 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 = 0.8f;
+            if (!SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice").equals("")) {
+                voice = Float.parseFloat(SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice"));
+                MediaPlayerManger.getInstance().setVolume(voice);
+            }
+            MediaPlayerManger.getInstance().setVolume(voice);
+        }
+    }
+
     //---------------------------------------------串口点击事件部分(下)---------------------------------------------------------------------
     //---------------------------------------------UI更改操作部分(上)---------------------------------------------------------------------
 
@@ -2552,13 +2594,16 @@ 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 (isVisible(blackView)) {
@@ -2611,6 +2656,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                 CallingBedActivity.initPlayerVolume(1.0f);
                 CALL_STATUS = Constants.STANDBY;
                 showThisView(vMain);
+                resumeBroadcastVolume();
 
                 if (isTransfer) {
                     if (null != callNoticeEntity) {
@@ -2731,6 +2777,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

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