浏览代码

#CHANGE
- 1.注册界面循环拉取数据
- 2.数据不全或设备未启用不进入主界面
- 3.未初始化完成不注册rtc websocket

weizhengliang 3 年之前
父节点
当前提交
856fbde3fa

+ 44 - 10
home/src/main/code/com/wdkl/ncs/android/component/home/activity/HomeActivity.kt

@@ -79,6 +79,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
 
     lateinit var batteryBroadcastReceiver: BatteryBroadcastReceiver
     private var isRegister = true
+    private var inited = false
 
     private val WRITE_EXTERNAL_STORAGE_REQUEST_CODE = 127//这个值是自定义的一个int值,在申请多个权限时要
 
@@ -253,7 +254,22 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
                 Manifest.permission.RECORD_AUDIO,
                 Manifest.permission.READ_PHONE_STATE)).subscribe {
             if (it) {
-                presenter.getDeviceVO(Constants.imei)// 传imei
+                //presenter.getDeviceVO(Constants.imei)  //传imei
+                Thread {
+                    while (!inited) {
+                        Log.i(TAG, "设备数据")
+                        runOnUiThread {
+                            if (!TextUtils.isEmpty(Constants.imei)) {
+                                presenter.getDeviceVO(Constants.imei)
+                            }
+                        }
+                        try {
+                            Thread.sleep(8000)
+                        } catch (e: Exception) {
+                            //
+                        }
+                    }
+                }.start()
             } else {
                 showMessage("请重新授权,进入App")
                 requestPermissions()
@@ -265,9 +281,6 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
      * 返回的设备信息
      */
     override fun setDeviceDo(data: DeviceWatchInfoVO) {
-        activity_register_layout.visibility = View.GONE
-        watch_activity_home_linyout.visibility = View.VISIBLE
-
         Log.i(TAG, "收到返回的设备信息 ")
         Constants.partId = data.partId
         Constants.deviceId = data.id
@@ -280,14 +293,24 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
         Constants.userRoleName = data.roleName
 
         if (Constants.deviceId==-1 || TextUtils.isEmpty(Constants.sipId)) {
-            showMessage("初始化数据时服务器返回数据不全,请联系管理员")
-            tv_status.text = "初始化数据时服务器返回数据不全,请联系管理员"
+            showMessage("初始化数据不全,请联系管理员")
+            tv_status.text = "初始化数据不全,请联系管理员"
             return
         } else if (TextUtils.isEmpty(Constants.tcpServer)) {
             showMessage("初始化tcp连接数据为null")
             tv_status.text = "初始化tcp连接数据为null"
             return
+        } else if (data.status != null && data.status == 0) {
+            showMessage("设备未启用")
+            tv_status.text = "设备未启用"
+            return
         }
+
+        inited = true
+        activity_register_layout.visibility = View.GONE
+        watch_activity_home_linyout.visibility = View.VISIBLE
+
+
         initSDK()
         presenter.getDeviceSettingData(""+Constants.partId)
 
@@ -511,6 +534,13 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
                 netAvailable = false
                 tv_rtc_status.setBackgroundColor(Color.RED)
             }
+        } else if (messageEvent.tag == Constants.TCP_MSG) {
+            val tcp = messageEvent.getMessage() as TcpModel
+            if (tcp.action == TcpAction.DataAction.REFRESH) {
+                if (!TextUtils.isEmpty(Constants.imei)) {
+                    presenter.getDeviceVO(Constants.imei)
+                }
+            }
         }
     }
 
@@ -518,10 +548,14 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
     inner class TimeReceiver: BroadcastReceiver() {
         override fun onReceive(context: Context, intent: Intent) {
             if (intent.action == Intent.ACTION_TIME_TICK) {
-                if (SocketManager.getInstance().socketOpen() && SocketManager.getInstance().userState == 1 && TcpClientHandler.getConnected()) {
-                    tv_rtc_status.setBackgroundColor(Color.GREEN)
-                } else {
-                    SocketManager.getInstance().connect(Urls.WS, Constants.sipId, 0)
+                if (inited) {
+                    if (SocketManager.getInstance()
+                            .socketOpen() && SocketManager.getInstance().userState == 1 && TcpClientHandler.getConnected()
+                    ) {
+                        tv_rtc_status.setBackgroundColor(Color.GREEN)
+                    } else {
+                        SocketManager.getInstance().connect(Urls.WS, Constants.sipId, 0)
+                    }
                 }
             } else if (intent.action == Constants.HOOK_ON) {
                 Log.e(TAG,"手柄放下 ")

+ 1 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/util/AnrFcExceptionUtil.java

@@ -101,6 +101,7 @@ public class AnrFcExceptionUtil implements Thread.UncaughtExceptionHandler {
 
         //重新启动app
         Intent mStartActivity = new Intent(application.getApplicationContext(), HomeActivity.class);
+        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         int mPendingIntentId = 123456;
         PendingIntent mPendingIntent = PendingIntent.getActivity(application.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
         AlarmManager mgr = (AlarmManager) application.getApplicationContext().getSystemService(Context.ALARM_SERVICE);

+ 1 - 0
home/src/main/res/layout/activity_register.xml

@@ -45,6 +45,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="20dp"
+            android:gravity="center_horizontal"
             android:textColor="@color/color_red"
             android:textSize="20dp"
             android:text=""/>

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -51,5 +51,7 @@ class Constants {
         const val VIDEO_MSG = 0x06
         const val BACK_TO_MAIN_MSG = 0x08
         const val VISIT_MSG = 0x09
+
+        const val TCP_MSG = 0x20
     }
 }

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -89,7 +89,7 @@ public class DeviceChannel {
                 break;
             case DATA:
                 if (tcpModel.getAction() == TcpAction.DataAction.REFRESH){
-                    EventBus.getDefault().post(new MessageEvent(tcpModel, 4));
+                    EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.TCP_MSG));
                 }
                 break;
             case TIME: