Преглед изворни кода

<修改主机呼叫分机需要分机接听才能通话,修改udp广播地址为192.168.255.255>

weizhengliang пре 4 година
родитељ
комит
cebf306579

+ 1 - 1
app/build.gradle

@@ -31,7 +31,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.57"
+        versionName "1.58"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

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

@@ -59,6 +59,12 @@ public class APPUpdateActivity extends BaseActivity {
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        updateAPPHandler.removeCallbacksAndMessages(null);
+    }
+
+    @Override
     protected void initData() {
         appUpdateActivity = this;
         downLoadURL = getIntent().getStringExtra("downLoadURL");

+ 72 - 27
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -182,6 +182,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     private static boolean netOff = false;
 
+    private static boolean activityStop = false;
+
     /**
      * 注册检测wifi强度广播
      */
@@ -471,9 +473,9 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         }
 
                         //拉起增长页面(20191017 waderson)
-                        if(MyApplication.have_long_main_page){
-                            callLongNursePage(second);
-                        }
+                        //if(MyApplication.have_long_main_page){
+                        //    callLongNursePage(second);
+                        //}
 
                         //自动回来主页面 add by waderson 20190707
                         comeBackMainPage();
@@ -516,7 +518,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");
                         }
@@ -615,6 +617,24 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     }
 
     @Override
+    protected void onStart() {
+        super.onStart();
+        activityStop = false;
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        activityStop = false;
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        activityStop = true;
+    }
+
+    @Override
     public int getLayoutId() {
         //SIP准备工作
         initSip();
@@ -784,7 +804,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:
@@ -1566,15 +1586,25 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==1");
-                            long curTimeMills = System.currentTimeMillis();
-                            if (curTimeMills - localMillsCallNurse > 3000) {
-                                clickVNurse();
-                                localMillsCallNurse = curTimeMills;
-                                tvNurseTimeOut.setText("");
-                                //呼叫超时倒计时开启
-                                callTypeCallNurse = "1";
-                                //handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
+                            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有回音,需要禁掉
+                                }
                             }
                         }
                     });
@@ -1582,7 +1612,16 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     CallingBedActivity.this.runOnUiThread(new Runnable() {
                         public void run() {
                             LogUtil.d("WWW", "呼叫护士键==2");
-                            //if (Constants.IS_CALLED == 0) {//当前没有呼叫长按后还是呼叫
+                            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 {
+                                //if (Constants.IS_CALLED == 0) {//当前没有呼叫长按后还是呼叫
                                 long curTimeMills = System.currentTimeMillis();
                                 if (curTimeMills - localMillsCallNurse > 3000) {
                                     clickVNurse();
@@ -1593,9 +1632,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                     //handsMICStatus = setHandsMIC(serialPortUtil, false);//点击了外部按键就将手柄MIC关掉
                                     handsMICStatus = setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
                                 }
-                            //} else if (Constants.IS_CALLED == 1) {//当前有呼叫长按后取消呼叫
-                            //    UdpSendUtil.sendHangUp(initDataEntity, mainDataEntity);//长按取消呼叫 add by waderson 20191108
-                            //}
+                                //} else if (Constants.IS_CALLED == 1) {//当前有呼叫长按后取消呼叫
+                                //    UdpSendUtil.sendHangUp(initDataEntity, mainDataEntity);//长按取消呼叫 add by waderson 20191108
+                                //}
+                            }
 
                         }
                     });
@@ -1618,6 +1658,15 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             } /*else {
                                 handsMICStatus = setHandsMIC(serialPortUtil, false);
                             }*/
+                            else 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("");
+                            }
                         }
                     });
                 }
@@ -2517,19 +2566,15 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     handler.removeMessages(TURN_OFF_SCREEN);
                 }
 
-                /*if (CALL_STATUS.equals(Constants.STANDBY)) {
+                if (CALL_STATUS.equals(Constants.STANDBY)) {
                     //主机主动呼叫分机
-                    CALL_STATUS = Constants.IN_CALLING;
-                    //正在通话中:isIncomingCall() = true
-                    //CallingBedActivity.initPlayerVolume(0.0f);
+                    CALL_STATUS = Constants.IN_CALL;
                     showThisView(vNurse);
                     SoundPoolManager.getInstance().playSound(1);
                     tvNurseText.setText("主机请求通话...");
                     tvNurseTimeOut.setText("");
-                    handler.sendEmptyMessageDelayed(NEW_INCOMING_CALL, 2000);
-                } else {*/
+                } else {
                     //分机主动呼叫主机
-                    CALL_STATUS = Constants.IN_CALL;
                     handsMICStatus = setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
                     //=============================================SIP自动接听===================================//
                     SipHelperUtil.getInstance(CallingBedActivity.this).getmSipCallBackI().autoTalking();
@@ -2543,7 +2588,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     //jbVNurse.stopJumping();
                     tvNurseText.setText("正在通话中...");
                     tvNurseTimeOut.setText("");
-                //}
+                }
 
                 if (isTransfer) {
                 } else {
@@ -2677,7 +2722,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     protected void comeBackMainPage() {
         timeOfBackMainPage++;
         timeOut--;
-        if (!isVisible(vMain) && timeOfBackMainPage >= callTimeOutBack && !CALL_STATUS.equals(Constants.IN_CALLING) && !isEmptyInfo) {
+        if (!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
@@ -2693,7 +2738,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 + " 秒");

+ 1 - 1
app/src/main/java/com/wdkl/callingbed/util/UdpHelper.java

@@ -105,7 +105,7 @@ public class UdpHelper implements Runnable {
         }
         InetAddress local = null;
         try {
-            local = InetAddress.getByName("255.255.255.255");
+            local = InetAddress.getByName("192.168.255.255");
         } catch (UnknownHostException e) {
             e.printStackTrace();
         }