|
@@ -1,8 +1,6 @@
|
|
|
package com.dlc.exam.ui
|
|
package com.dlc.exam.ui
|
|
|
|
|
|
|
|
-import android.content.ComponentName
|
|
|
|
|
import android.content.Intent
|
|
import android.content.Intent
|
|
|
-import android.content.ServiceConnection
|
|
|
|
|
import android.os.*
|
|
import android.os.*
|
|
|
import android.view.LayoutInflater
|
|
import android.view.LayoutInflater
|
|
|
import android.view.View
|
|
import android.view.View
|
|
@@ -13,7 +11,7 @@ import com.dlc.exam.common.CommonUtils
|
|
|
import com.dlc.exam.common.ExamType
|
|
import com.dlc.exam.common.ExamType
|
|
|
import com.dlc.exam.databinding.ActivityMainBinding
|
|
import com.dlc.exam.databinding.ActivityMainBinding
|
|
|
import com.dlc.exam.iflytek.VoiceItsManager
|
|
import com.dlc.exam.iflytek.VoiceItsManager
|
|
|
-import com.dlc.exam.mqtt.MqttService
|
|
|
|
|
|
|
+import com.dlc.exam.monitor.MonitorManager
|
|
|
import com.dlc.exam.mqtt.event.UpdateEvent
|
|
import com.dlc.exam.mqtt.event.UpdateEvent
|
|
|
import com.dlc.exam.ui.certificate.CertificateManagementActivity
|
|
import com.dlc.exam.ui.certificate.CertificateManagementActivity
|
|
|
import com.dlc.exam.ui.common.BaseCountDownActivity
|
|
import com.dlc.exam.ui.common.BaseCountDownActivity
|
|
@@ -45,9 +43,6 @@ import org.greenrobot.eventbus.ThreadMode
|
|
|
*/
|
|
*/
|
|
|
class MainActivity : BaseCountDownActivity<ActivityMainBinding>(), TitleBar.TitleListener {
|
|
class MainActivity : BaseCountDownActivity<ActivityMainBinding>(), TitleBar.TitleListener {
|
|
|
|
|
|
|
|
- private lateinit var runnable: Runnable
|
|
|
|
|
- private var handler: Handler = Handler(Looper.getMainLooper())
|
|
|
|
|
-
|
|
|
|
|
override fun createViewBinding() = ActivityMainBinding.inflate(LayoutInflater.from(this))
|
|
override fun createViewBinding() = ActivityMainBinding.inflate(LayoutInflater.from(this))
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
@@ -55,54 +50,17 @@ class MainActivity : BaseCountDownActivity<ActivityMainBinding>(), TitleBar.Titl
|
|
|
VoiceItsManager.initIts(this)
|
|
VoiceItsManager.initIts(this)
|
|
|
VoiceItsManager.speakVoice("欢迎使用实验室安全学习与考试系统")
|
|
VoiceItsManager.speakVoice("欢迎使用实验室安全学习与考试系统")
|
|
|
EventBus.getDefault().register(this)
|
|
EventBus.getDefault().register(this)
|
|
|
- bindService(Intent(this, MqttService::class.java), mConnection, BIND_AUTO_CREATE)
|
|
|
|
|
- // 创建定时任务
|
|
|
|
|
- runnable = object : Runnable {
|
|
|
|
|
- override fun run() {
|
|
|
|
|
- // 每隔一个小时执行一次操作
|
|
|
|
|
- // 这里可以添加你需要执行的代码
|
|
|
|
|
- subAddData()
|
|
|
|
|
- // 重新启动定时任务
|
|
|
|
|
- handler.postDelayed(this, 3600000) // 3600000 毫秒为一小时
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // 第一次启动定时任务
|
|
|
|
|
- handler.post(runnable)
|
|
|
|
|
|
|
+ // MQTT 连接与设备在线心跳都由 ExamApp(Application)常驻持有,
|
|
|
|
|
+ // 不再绑在 Activity 上 —— 否则每次页面切换/Activity 销毁都会断开 MQTT,
|
|
|
|
|
+ // 服务端据此判在线时设备就会在"在线/离线"之间交替。
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private fun subAddData() {
|
|
|
|
|
- val androidId = CommonUtils.getAndroidId(this)
|
|
|
|
|
- val disposable = ApiRepository.monitor(androidId)
|
|
|
|
|
- .subscribe({ data ->
|
|
|
|
|
-
|
|
|
|
|
- }, { throwable ->
|
|
|
|
|
- showNetError(throwable)
|
|
|
|
|
- })
|
|
|
|
|
- addDisposable(disposable)
|
|
|
|
|
- }
|
|
|
|
|
override fun onDestroy() {
|
|
override fun onDestroy() {
|
|
|
VoiceItsManager.release()
|
|
VoiceItsManager.release()
|
|
|
EventBus.getDefault().unregister(this)
|
|
EventBus.getDefault().unregister(this)
|
|
|
- unbindService(mConnection)
|
|
|
|
|
- try {
|
|
|
|
|
- handler.removeCallbacks(runnable)
|
|
|
|
|
- handler.removeCallbacksAndMessages(null)
|
|
|
|
|
- } catch (e: Exception) {
|
|
|
|
|
- }
|
|
|
|
|
super.onDestroy()
|
|
super.onDestroy()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private val mConnection: ServiceConnection = object : ServiceConnection {
|
|
|
|
|
-
|
|
|
|
|
- override fun onServiceConnected(name: ComponentName, service: IBinder) {
|
|
|
|
|
- service as MqttService.MqttBinder
|
|
|
|
|
- service.initMqtt()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun onServiceDisconnected(name: ComponentName) {
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
override fun onResume() {
|
|
override fun onResume() {
|
|
|
if (null == ExamApp.sLearnLoginVo) {
|
|
if (null == ExamApp.sLearnLoginVo) {
|
|
|
viewBinding.titleBar.showLogoutView(false)
|
|
viewBinding.titleBar.showLogoutView(false)
|
|
@@ -214,6 +172,9 @@ class MainActivity : BaseCountDownActivity<ActivityMainBinding>(), TitleBar.Titl
|
|
|
// 登录成功
|
|
// 登录成功
|
|
|
queryTodoViolation()
|
|
queryTodoViolation()
|
|
|
|
|
|
|
|
|
|
+ // 登录后才拿到 token,立即补报一次心跳,保证服务端尽快把设备置为在线
|
|
|
|
|
+ MonitorManager.reportNow()
|
|
|
|
|
+
|
|
|
viewBinding.titleBar.showLogoutView(true)
|
|
viewBinding.titleBar.showLogoutView(true)
|
|
|
// viewBinding.titleBar.setUsername(ExamApp.sLearnLoginVo!!.nickName)
|
|
// viewBinding.titleBar.setUsername(ExamApp.sLearnLoginVo!!.nickName)
|
|
|
viewBinding.titleBar.setUsername(ExamApp.sLearnLoginVo!!.userName)
|
|
viewBinding.titleBar.setUsername(ExamApp.sLearnLoginVo!!.userName)
|