feat(WelcomeActivity): 添加网络连接检查功能
- 引入 ConnectivityManager 和 NetworkCapabilities 网络状态检测 - 添加 showMessage 扩展函数用于显示网络提示 - 在跳转到任务列表前验证网络连接状态 - 在语音识别触发前检查网络可用性 - 在 onResume 中增加网络连接检查 - 为 ChatActivity 和 TaskCenter 跳转添加网络验证 - 实现 runWithNetwork 函数封装网络检查逻辑 - 创建 ensureNetworkAvailable 函数显示网络状态提示 - 开发 isNetworkAvailable 函数检测互联网连接能力
这个提交包含在:
父节点
5fec9c46ca
当前提交
c770aad6ec
@ -1,6 +1,8 @@
|
||||
package com.nova.brain.glass.ui
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@ -14,6 +16,7 @@ import com.nova.brain.glass.helper.OfflineCmdListener
|
||||
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
||||
import com.nova.brain.glass.model.RecognizeParams
|
||||
import com.nova.brain.glass.viewmodel.WelcomeVM
|
||||
import com.xuqm.base.extensions.showMessage
|
||||
import com.xuqm.base.ui.BaseActivity
|
||||
|
||||
class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
||||
@ -51,11 +54,14 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
||||
vm = ViewModelProvider(this)[WelcomeVM::class.java]
|
||||
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||
binding.tv.setOnClickListener {
|
||||
startActivity(Intent(this, TaskListActivity::class.java))
|
||||
runWithNetwork {
|
||||
startActivity(Intent(this, TaskListActivity::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun triggerRecognize() {
|
||||
if (!ensureNetworkAvailable()) return
|
||||
startDotsAnim()
|
||||
IntentRecognizeHelper.recognize(
|
||||
text = "查看我的任务列表?",
|
||||
@ -85,7 +91,9 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
||||
runOnUiThread {
|
||||
when (cmd) {
|
||||
"任务列表", "查看任务", "查看任务列表" -> {
|
||||
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
|
||||
runWithNetwork {
|
||||
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -96,16 +104,21 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
||||
super.onResume()
|
||||
OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
|
||||
OfflineCmdServiceHelper.addListenerWelcome()
|
||||
ensureNetworkAvailable()
|
||||
stopDotsAnim() // 从 ChatActivity 返回时恢复原文
|
||||
AsrHelper.scene = "home"
|
||||
AsrHelper.onGoToDecisionCenter = { action ->
|
||||
startActivity(
|
||||
Intent(this, ChatActivity::class.java)
|
||||
.putExtra("question", action.params.question)
|
||||
)
|
||||
runWithNetwork {
|
||||
startActivity(
|
||||
Intent(this, ChatActivity::class.java)
|
||||
.putExtra("question", action.params.question)
|
||||
)
|
||||
}
|
||||
}
|
||||
AsrHelper.onGoToTaskCenter = { action ->
|
||||
startActivity(intentForTaskList(action.params))
|
||||
runWithNetwork {
|
||||
startActivity(intentForTaskList(action.params))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,4 +146,24 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
||||
super.onDestroy()
|
||||
window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||
}
|
||||
|
||||
private fun runWithNetwork(action: () -> Unit) {
|
||||
if (ensureNetworkAvailable()) {
|
||||
action()
|
||||
}
|
||||
}
|
||||
|
||||
private fun ensureNetworkAvailable(): Boolean {
|
||||
if (isNetworkAvailable()) return true
|
||||
"当前无网络,请检查网络连接".showMessage()
|
||||
return false
|
||||
}
|
||||
|
||||
private fun isNetworkAvailable(): Boolean {
|
||||
val connectivityManager =
|
||||
getSystemService(ConnectivityManager::class.java) ?: return false
|
||||
val network = connectivityManager.activeNetwork ?: return false
|
||||
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
|
||||
return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||
}
|
||||
}
|
||||
正在加载...
在新工单中引用
屏蔽一个用户