Selaa lähdekoodia

<修改主机呼叫分机需要分机接听才能通话>

weizhengliang 4 vuotta sitten
vanhempi
commit
8a5ee0934e

+ 6 - 0
app/src/main/java/com/wdkl/callingbed2/ui/APPUpdateActivity.java

@@ -52,6 +52,12 @@ public class APPUpdateActivity extends BaseActivity {
         }
     }
 
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        updateAPPHandler.removeCallbacksAndMessages(null);
+    }
+
     /**
      * 下载APK包
      */

+ 71 - 21
app/src/main/java/com/wdkl/callingbed2/ui/CallingBedActivity.java

@@ -188,6 +188,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     public static final String REGISTERCOM = "register_com";
 
     private static boolean netOff = false;
+
+    private static boolean activityStop = false;
     /**
      * 注册检测wifi强度广播
      */
@@ -544,7 +546,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         tvBroadcasting.setVisibility(View.INVISIBLE);
                         break;
                     case RESET_ETHE:
-                        if (netOff) {
+                        if (netOff && !activityStop) {
                             ToastUtil.showToast("网络异常,设备即将重启!!!");
                             CallingBedSendCommand.setNetStatus(serialPortUtil, "1");
                         }
@@ -639,6 +641,24 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         disableStatusBar();
     }
 
+    @Override
+    protected void onStart() {
+        super.onStart();
+        activityStop = false;
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        activityStop = false;
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        activityStop = true;
+    }
+
     private void setListeners() {
         llMainItem.setOnClickListener(this);
         llAdviceItem.setOnClickListener(this);
@@ -1007,7 +1027,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     case REGISTERFAIL:
                         netOff = true;
                         tvSipStatePoint.setBackgroundResource(R.color.red_color);
-                        handler.sendEmptyMessageDelayed(RESET_ETHE, 120000);
+                        handler.sendEmptyMessageDelayed(RESET_ETHE, 150000);
                         //CallingBedSendCommand.setSipStatus(serialPortUtil, "0");
                         break;
                     case REGISTERCOM:
@@ -1631,11 +1651,21 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==1");
                             wakeUpScreen();
-                            callNurse();
-                            tvNurseTimeOut.setText("");
-                            //呼叫超时倒计时开启
-                            callTypeCallNurse = "1";
-                            handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                            if (CALL_STATUS.equals(Constants.IN_CALL)) {
+                                //主机呼叫分机,按键接听
+                                SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
+                                CALL_STATUS = Constants.IN_CALLING;
+                                tvNurseText.setText("正在通话中...");
+                                tvNurseTimeOut.setText("");
+                                handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                                setCallStatus(serialPortUtil, "2");
+                            } else {
+                                callNurse();
+                                tvNurseTimeOut.setText("");
+                                //呼叫超时倒计时开启
+                                callTypeCallNurse = "1";
+                                handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                            }
                         }
                     });
                 }
@@ -1691,6 +1721,15 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             } else if (CALL_STATUS.equals(Constants.IN_CALLING)) {
                                 endCallNurse();
                                 handsMICStatus = setHandsMIC(serialPortUtil, false);
+                            } else if (CALL_STATUS.equals(Constants.IN_CALL)) {
+                                //主机呼叫分机,按键接听
+                                handsMICStatus = setHandsMIC(serialPortUtil, true);
+                                //=============================================SIP自动接听===================================//
+                                SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
+                                CALL_STATUS = Constants.IN_CALLING;
+                                tvNurseText.setText("正在通话中...");
+                                tvNurseTimeOut.setText("");
+                                setCallStatus(serialPortUtil, "2");
                             }
                         }
                     });
@@ -2740,7 +2779,6 @@ 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)) {
@@ -2749,19 +2787,30 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     handler.removeMessages(TURN_OFF_SCREEN);
                 }
 
-                //=============================================SIP自动接听===================================//
-                SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
+                if (CALL_STATUS.equals(Constants.STANDBY)) {
+                    //主机主动呼叫分机
+                    CALL_STATUS = Constants.IN_CALL;
+                    showThisView(vNurse);
+                    SoundPoolManager.getInstance().playSound(1);
+                    tvNurseText.setText("主机请求通话...");
+                    tvNurseTimeOut.setText("");
+                    setCallStatus(serialPortUtil, "1");
+                } else {
+                    //分机主动呼叫主机
+                    //=============================================SIP自动接听===================================//
+                    SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
 
-                //正在通话中:isIncomingCall() = true
-                CallingBedActivity.initPlayerVolume(0.0f);
+                    //正在通话中:isIncomingCall() = true
+                    CallingBedActivity.initPlayerVolume(0.0f);
 
-                CALL_STATUS = Constants.IN_CALLING;
-                showThisView(vNurse);
-                //jbVNurse = setJumpingBeans(tvNurseText, "正在通话中...");
-                //jbVNurse.stopJumping();
-                tvNurseText.setText("正在通话中...");
-                tvNurseTimeOut.setText("");
-                setCallStatus(serialPortUtil, "2");
+                    CALL_STATUS = Constants.IN_CALLING;
+                    showThisView(vNurse);
+                    //jbVNurse = setJumpingBeans(tvNurseText, "正在通话中...");
+                    //jbVNurse.stopJumping();
+                    tvNurseText.setText("正在通话中...");
+                    tvNurseTimeOut.setText("");
+                    setCallStatus(serialPortUtil, "2");
+                }
 
                 if (isTransfer) {
                 } else {
@@ -2886,7 +2935,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     protected void comeBackMainPage() {
         timeOfBackMainPage++;
         timeOut--;
-        if ((timeOut <= 0) || (!isVisible(vMain) && timeOfBackMainPage >= callTimeOutBack && !CALL_STATUS.equals(Constants.IN_CALLING) && !isEmptyInfo)) {
+        if ((timeOut <= 0) || (!isVisible(vMain) && timeOfBackMainPage >= callTimeOutBack
+                && !CALL_STATUS.equals(Constants.IN_CALL) && !CALL_STATUS.equals(Constants.IN_CALLING) && !isEmptyInfo)) {
 //            if (callNurse) {//超时自动取消呼叫了,20191118 之前是长按取消呼叫,后来又改成了根据UI的改变来取消,说让客户一目了然
 //                callNurse = false;
 //                UdpSendUtil.sendHangUp(initDataEntity, mainDataEntity);//取消呼叫 add by waderson 20191118
@@ -2903,7 +2953,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             if (null != initDataEntity) {
                 getMainData(1);
             }
-        } else if (CALL_STATUS.equals(Constants.IN_CALLING)){
+        } else if (CALL_STATUS.equals(Constants.IN_CALLING) || CALL_STATUS.equals(Constants.IN_CALL)){
             tvNurseTimeOut.setText("");
         } else {
             tvSupportTimeOut.setText(timeOut + " 秒");