Browse Source

1.设备未启用时禁用
2.优化无网重连

weizhengliang 3 năm trước cách đây
mục cha
commit
a4720c2224

+ 62 - 20
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -44,6 +44,7 @@ import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import kotlinx.android.synthetic.main.callingdoor_main_lay.*
+import kotlinx.android.synthetic.main.view_bed_name.*
 import kotlinx.android.synthetic.main.view_title_layout.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
@@ -72,6 +73,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     //通话界面fragment
     private var skyCallFragment: Fragment? = null
 
+    private var initialized :Boolean = false
     private var updating :Boolean = false
 
     private var clickTime : Long = 0
@@ -310,6 +312,29 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         })
     }
 
+    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
+        Constant.TCP_SERVER_URL = tcpSeverDTO.localIp
+        Constant.TCP_PORT = tcpSeverDTO.tcpPort
+        Constant.TCP_HEART_BEAT = tcpSeverDTO.readerIdleTime
+
+        //开启TCP连接
+        startTcp()
+        showMessage("tcp开始连接...host: " + Constant.TCP_SERVER_URL + ", port: " + Constant.TCP_PORT)
+
+        Thread(Runnable {
+            while (!initialized) {
+                runOnUiThread(Runnable {
+                    initDevice()
+                })
+                try {
+                    Thread.sleep(8000)
+                } catch (e: Exception) {
+                    //
+                }
+            }
+        }).start()
+    }
+
     //显示设备信息
     override fun showDeviceInfo(deviceInfo: DeviceRoomInfoVO) {
         //显示床位信息界面
@@ -328,9 +353,22 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         Constant.DEVICE_SOFT_VER = deviceInfo.softVer
         Constant.DEVICE_HARD_VER = deviceInfo.hardVer
         Constant.DEVICE_NAME = deviceInfo.name
+        if (deviceInfo.status != null) {
+            Constant.DEVICE_STATUS = deviceInfo.status
+        }
 
+        initialized = true
         view_title_layout_tv_hospital_name.text = deviceInfo.hospitalName + deviceInfo.partName
-        tv_room_name.text = Constant.ROOM_NAME
+        if (TextUtils.isEmpty(Constant.SIP_ID)) {
+            showMessage("SIP ID为空")
+        }
+        if (Constant.DEVICE_STATUS == 0) {
+            tv_room_name.text = "设备未启用"
+            tv_room_name.setTextColor(resources.getColor(R.color.red_color))
+        } else {
+            tv_room_name.text = Constant.ROOM_NAME
+            tv_room_name.setTextColor(resources.getColor(R.color.main_color))
+        }
 
         if (deviceInfo.frameId != null) {
             Constant.FRAME_ID = deviceInfo.frameId
@@ -378,16 +416,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         updateSettings(true)
     }
 
-    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
-        Constant.TCP_SERVER_URL = tcpSeverDTO.localIp
-        Constant.TCP_PORT = tcpSeverDTO.tcpPort
-        Constant.TCP_HEART_BEAT = tcpSeverDTO.readerIdleTime
-
-        //开启TCP连接
-        startTcp()
-        showMessage("tcp开始连接...host: " + Constant.TCP_SERVER_URL + ", port: " + Constant.TCP_PORT)
-    }
-
     override fun loadAppVersion(appInfo: AppVersionDO) {
         Log.d("AppUpdate", "loadAppVersion111 =====>>  versionNo: " + appInfo.versionNo + ", path: " + appInfo.appPath)
         showMessage("获取版本成功,当前版本号: " + BuildConfig.VERSION_CODE + ", 服务器版本号: " + appInfo.versionNo)
@@ -455,7 +483,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
             if (System.currentTimeMillis() - clickSosTime > 10000) {
                 runOnUiThread {
                     clickSosTime = System.currentTimeMillis()
-                    SOSHelper.sosStart()
+                    if (Constant.TCP_CONNECTED) {
+                        SOSHelper.sosStart()
+                    }
                 }
             }
         }
@@ -475,6 +505,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
     //开始呼叫
     fun startCall(type: Int) {
+        if (Constant.DEVICE_STATUS != 1) {
+            showMessage("设备未启用,无法呼叫")
+            return
+        }
+
         //通话之前先判断webrtc socket和tcp是否连接正常,否则不能建立通话
         if (SocketManager.getInstance().socketOpen() && Constant.TCP_CONNECTED) {
             //去电界面
@@ -566,6 +601,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                             checkAppVersion()
                         } else if (tcpModel.action == TcpAction.DeviceAction.SYSTEM_SETTING) {
                             presenter.loadPartSettings(Constant.PART_ID)
+                        } else if (tcpModel.action == TcpAction.DeviceAction.RESTART) {
+                            initDevice()
                         }
                     } else if (tcpModel.action == TcpAction.DataAction.REFRESH) {
                         //重新加载数据
@@ -652,7 +689,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     private fun updateTcpState() {
         if (Constant.TCP_CONNECTED) {
             view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_success)
-            if (SocketManager.getInstance().userState == 0) {
+            if (initialized && SocketManager.getInstance().userState == 0) {
                 //如果socket断开了则重连
                 connectSocket()
             }
@@ -702,17 +739,22 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     || intent.action == Intent.ACTION_TIME_CHANGED
                     || intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
                 updateNetState()
-                updateSettings(false)
-                updateTcpState()
+                if (initialized) {
+                    updateSettings(false)
+                    updateTcpState()
 
-                if (SocketManager.getInstance().userState == 1) {
-                    view_title_layout_tv_point.setBackgroundResource(R.color.green)
-                } else {
-                    view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
+                    if (SocketManager.getInstance().userState == 1) {
+                        view_title_layout_tv_point.setBackgroundResource(R.color.green)
+                    } else {
+                        view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
+                    }
+                } else if (TextUtils.isEmpty(Constant.TCP_SERVER_URL)) {
+                    //还未连接tcp服务器
+                    presenter.loadTcpServerHost()
                 }
             } else if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
                 updateNetState()
-                if (NetHelper.getInstance().networkAvailable()) {
+                if (initialized && NetHelper.getInstance().networkAvailable()) {
                     if (!Constant.TCP_CONNECTED) {
                         TcpClient.getInstance().doConnect()
                     }

+ 1 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/MainFragment.kt

@@ -120,7 +120,7 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainViewLayoutBinding>()
     }
 
     fun updateInfo() {
-        if (Constant.FRAME_ID != -1) {
+        if (Constant.FRAME_ID != -1 && Constant.DEVICE_STATUS == 1) {
             presenter.loadRoomFrameInfo(Constant.FRAME_ID)
         }
     }

+ 3 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -5,7 +5,7 @@ public class Constant {
     public static String APP_PATH = "";
 
     //TCP服务器地址:
-    public static String TCP_SERVER_URL = "172.28.100.100";
+    public static String TCP_SERVER_URL = "";
 
     //数据接口端口:
     public static int URL_PORT = 8006;
@@ -95,6 +95,8 @@ public class Constant {
      */
     public static String DEVICE_NAME = "门口机";
 
+    public static int DEVICE_STATUS = -1;
+
     //MCU版本
     public static String MCU_VERSION_NUMBER = "";